LlTeleportAgentGlobalCoords/ja
		
		
		
		
		
		Jump to navigation
		Jump to search
		
  
    
		
	
| LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル | 
要約
関数: llTeleportAgentGlobalCoords( key agent, vector global_coordinates, vector region_coordinates, vector look_at );
指定した region_coordinates のリージョンの region_coordinates に  agent の座標を設定し、テレポートさせます。アバターは到着すると 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から与えられなければなりません。 llRequestSimulatorData と llTeleportAgentGlobalCoords の組み合わせで、リージョンの名前を使ってアバターをテレポートさせることができるようになります。
警告
- 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
- スクリプトに PERMISSION_TELEPORT の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
- PERMISSION_TELEPORT がagent以外の人から許可され、関数が呼び出されると、 DEBUG_CHANNEL でエラーが叫ばれます。
- いったん PERMISSION_TELEPORT 権限が付与されると、スクリプトの中で (例えば、新しい llRequestPermissions 呼び出しなどにより) 権限をはく奪することができません。スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。
- llAttachToAvatarTemp で装着されたオブジェクトの中のスクリプトでは、この関数は動作しません。
- この関数でテレポートすることができるのは、オブジェクトのオーナーだけです。
- 座っているアバターをこの関数を使ってテレポートさせることはできません。最初に llUnSit する必要があります。
サンプル
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の関連した項目が参考になるかもしれません。