LlTeleportAgentGlobalCoords/ja

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

要約

関数: llTeleportAgentGlobalCoords( key agent, vector global_coordinates, vector region_coordinates, vector look_at );

指定した region_coordinates のリージョンの region_coordinatesagent の座標を設定し、テレポートさせます。アバターは到着すると look_at のローカル座標で指定される場所を見るように立ちます。リージョンのグローバル座標は llRequestSimulatorData(region_name, DATA_SIM_POS) を使うと取得できます。

• key agent 同一 地域 にいるアバターの UUID (テレポートするアバター)
• vector global_coordinates テレポート先のリージョンのグローバル座標。 llRequestSimulatorData(region_name, DATA_SIM_POS) で取得できます。
• vector region_coordinates テレポート先のリージョン内での着地場所。ローカル座標で指定します。
• vector look_at テレポートが完了したときにアバターが向く先。ローカル座標で指定します。

実行するには、llRequestPermissions による PERMISSION_TELEPORT 権限がagentから与えられなければなりません。 llRequestSimulatorDatallTeleportAgentGlobalCoords の組み合わせで、リージョンの名前を使ってアバターをテレポートさせることができるようになります。

警告

  • 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
  • スクリプトに PERMISSION_TELEPORT の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
  • PERMISSION_TELEPORTagent以外の人から許可され、関数が呼び出されると、 DEBUG_CHANNEL でエラーが叫ばれます。
  • いったん PERMISSION_TELEPORT 権限が付与されると、スクリプトの中で (例えば、新しい llRequestPermissions 呼び出しなどにより) 権限をはく奪することができません。スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。
  • llAttachToAvatarTemp で装着されたオブジェクトの中のスクリプトでは、この関数は動作しません。
  • この関数でテレポートすることができるのは、オブジェクトのオーナーだけです。
  • 座っているアバターをこの関数を使ってテレポートさせることはできません。最初に llUnSit する必要があります。
All Issues ~ Search JIRA for related Bugs

サンプル

string simName = "Help Island Public";
vector simGlobalCoords;

vector landingPoint = <128.0, 128.0, 24.0>;

key owner;


default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }

    changed(integer change)
    {
        if (change & CHANGED_OWNER)
            llResetScript();
    }

    state_entry()
    {
        owner = llGetOwner();

        llRequestPermissions(owner, PERMISSION_TELEPORT);
        llRequestSimulatorData(simName, DATA_SIM_POS);
    }

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

        if (id == owner)
        {
            if (simGlobalCoords == ZERO_VECTOR)
            {
                llOwnerSay("設定エラー。TPのリクエストが却下されました。再度実行してください!");
                llResetScript();
            }
            else
            {
                llOwnerSay("テレポート先: http://maps.secondlife.com/secondlife/"
                    + llEscapeURL(simName) + "/" + (string)llRound(landingPoint.x)
                    + "/" + (string)llRound(landingPoint.y) + "/" + (string)llRound(landingPoint.z) + "/");

                llTeleportAgentGlobalCoords(owner, simGlobalCoords, landingPoint, ZERO_VECTOR);
            }
        }
        else
        {
            // llRegionSayTo は llInstantMessage よりも動作が軽快です。
            // また、アバターは同一 SIM に存在するとみなして大丈夫です。

            llRegionSayTo(id, PUBLIC_CHANNEL,
                "ごめんなさい。オブジェクトの所有者でない方をテレポートさせることはできません。");
        }
    }

    run_time_permissions(integer perm)
    {
        // パーミッションの申請が却下された場合 (! は NOT の意味)
        if (!(perm & PERMISSION_TELEPORT))
        {
            llOwnerSay("テレポートするには、承認してもらう必要があります。");
            llRequestPermissions(owner, PERMISSION_TELEPORT);
        }
    }

//  dataserver イベントは、データが戻ってきた場合にのみ呼ばれます。
//  つまり、このイベントが存在しない SIM にデータをリクエストした場合、
// このイベントが呼ばれることはありません。

    dataserver(key query_id, string data)
    {
        simGlobalCoords = (vector)data;
        // llOwnerSay("SIM のグローバル座標: " + (string)simGlobalCoords);
    }
}

関連項目

イベント

•  run_time_permissions 権限取得イベント

関数

•  llGetPermissions 付与されている権限を取得します
•  llGetPermissionsKey 権限を許可したエージェントを取得します
•  llRequestPermissions 権限を要求します
•  llRequestSimulatorData SIM の位置を取得するのに便利な関数
•  llTeleportAgent SIM内でのエージェントのテレポート

記事

•  権限/スクリプト

特記事項

Search JIRA for related Issues

Signature

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