LlGetDisplayName/ja

From Second Life Wiki
Jump to navigation Jump to search

Emblem-important-red.png 警告 セキュリティ

セキュリティを確保する手段として表示名に頼るのはひどい考えです。一意でありませんし、簡単に変更することができます。

Emblem-important-red.png 警告 データの処理

表示名には引用符やカッコが含まれる可能性があります。LSLでは問題となりませんが、コマンドラインで実行するスクリプトや SQL クエリなどに渡すときは必ずエスケープしましょう。
XKCD: Exploits of a Mom を参照してください。

要約

関数: string llGetDisplayName( key id );

id で指定されたアバターの一意でない表示名を string で返します。

• key id 同一 地域 にいる、または地域が知っているアバターの UUID

id には、アバターのキーを正しい形式で指定しなければなりません。 アバターは SIM に存在するか、スクリプトが動作している SIM に知られている必要があります。条件に合わない場合は空の文字列が返ります。この関数はアバターが SIM の子エージェントである場合(例:隣接した SIM にいるが、スクリプトが置かれている SIM を見ることのできる状態)、SIM を離れて(具体的には、クライアントが当該 SIM または先の条件で隣接した SIM との接続を完全に切ってから)間もない場合にも正しい値を返します。

警告

  • 「アバターがいなければならない」制約を回避するには、llRequestDisplayName 関数と dataserver を組み合わせて、キーからアバターの表示名を取得します。
  • 反対の処理を行う関数 (llDisplayName2Key) はありません。表示名は一意でないからです。
  • 地域が表示名を取得できない状況にある場合、"???" や "" が返ります。これは地域で表示名が使えるようになっていても発生することがあります。特に、指定されたキーが初めてチェックされた場合に起こります。何回かリトライすることをおすすめします。アバターの存在を確認するのにこの関数をあてにしないでください。
    • ループ処理で誤った呼び出しを繰り返し実行しないでください。まれに、その地域にいる間じゅう、表示名やユーザ名が返ってこなくなる場合があります。

サンプル

// チャット履歴で見るといいですよ (ctrl-h)
default
{
    collision_start(integer a)//ぶつかった人をアナウンスします
    {
        llSay(0, "llGetDisplayName: " + llGetDisplayName(llDetectedKey(0)) +
               "\nllDetectedName: " + llDetectedName(0));
    }
    touch_start(integer a)
    {
        llSay(0,"llGetDisplayName: " + llGetDisplayName(llDetectedKey(0)) +
               "\nllDetectedName: " + llDetectedName(0));
    }
}

関連項目

関数

•  llRequestDisplayName dataserver を使ってアバターの情報を取得します
•  llGetUsername
•  llRequestUsername dataserver を使ってアバターの情報を取得します

特記事項

All Issues

~ Search JIRA for related Issues
   Display Name and Username showing as ???

Signature

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