Site search

Google
WWW を検索 backup-beta.blogspot.com を検索

2008年8月8日金曜日

アバターのキーを名前に変換するスクリプト

アバターのキー(UUID)がわかればllKey2Nameで名前を取得することができますが、これって対象のアバターが近くにいないとだめなんですねw
でも、アバターのキーがわかったらプロフ画像を表示するRandom AV Profile Projectorみたいにプロフィールのページから名前拾ってこれますよねwww


// アバターのキーから名前をゲット
key av="00000000-0000-0000-0000-000000000000";  // アバターのキー
string url="http://world.secondlife.com/resident/";
key http_request_id;

default
{
    state_entry()
    {
        url+=(string)av;  // プロフのURL
        http_request_id=llHTTPRequest(url,[],"");  // HTTPリクエスト送信
    }

    http_response(key request_id, integer status, list metadata, string body)
    {
        if (request_id == http_request_id)
        {
            integer i=llSubStringIndex(body,"<title>");  // プロフページ<title>の位置
            integer j=llSubStringIndex(body,"</title>");  // プロフページ</title>の位置
            string name=llGetSubString(body,i+7,j-1);  // タイトルは名前
            llSay(0,name);  // アバター名をチャットで表示
        }
    }
}

最初のNULL_KEY入れてるところにアバターのキーを入れてくださいね^^

8月9日12時頃追記: ささぴさんよりコメント頂きまして、結局こんなことしなくってもdataserver通して名前を得るほうが簡単なんですね^^; その方法を一応下に載せておきますね(上のは、まあHTTPリクエストのサンプルってことで残しときますw)
key av="00000000-0000-0000-0000-000000000000";  // アバターのキー
key query;

default
{
    state_entry()
    {  // データサーバーに問い合わせ
        query=llRequestAgentData(av,DATA_NAME);
    }

    dataserver(key queryid, string data)
    {
        if (query == queryid) {
            llSay(0,data);  // アバター名をチャットで表示
        }
    }
}

2 件のコメント:

  1. こんにちは。
    いろいろな手法がある思いますが、アバターのキーから名前を取得するならllRequestAgentDataを使ったほうが簡単かな・・・。
    LSLWikiのサンプルに、まさにそーゆーサンプルが載っています。
    http://wiki.secondlife.com/wiki/LlRequestAgentData

    返信削除
  2. こんにちは。ホントですね^^
    dataserverって何か貧弱・頼りないって感じの印象があったので当てにしてなかったっていうか見落としてました。。。て、オンラインボード作るとき使ったことのある関数なのにすっかり忘れてたんですね^^;;
    ありがとうございます。間違いや失敗しててもなかなか気付かないので助かります。

    返信削除