Site search
2008年8月8日金曜日
アバターのキーを名前に変換するスクリプト
アバターのキー(UUID)がわかればllKey2Nameで名前を取得することができますが、これって対象のアバターが近くにいないとだめなんですねw
でも、アバターのキーがわかったらプロフ画像を表示するRandom AV Profile Projectorみたいにプロフィールのページから名前拾ってこれますよねwww
最初のNULL_KEY入れてるところにアバターのキーを入れてくださいね^^
8月9日12時頃追記: ささぴさんよりコメント頂きまして、結局こんなことしなくってもdataserver通して名前を得るほうが簡単なんですね^^; その方法を一応下に載せておきますね(上のは、まあHTTPリクエストのサンプルってことで残しときます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); // アバター名をチャットで表示
}
}
}
登録:
コメントの投稿 (Atom)
こんにちは。
返信削除いろいろな手法がある思いますが、アバターのキーから名前を取得するならllRequestAgentDataを使ったほうが簡単かな・・・。
LSLWikiのサンプルに、まさにそーゆーサンプルが載っています。
http://wiki.secondlife.com/wiki/LlRequestAgentData
こんにちは。ホントですね^^
返信削除dataserverって何か貧弱・頼りないって感じの印象があったので当てにしてなかったっていうか見落としてました。。。て、オンラインボード作るとき使ったことのある関数なのにすっかり忘れてたんですね^^;;
ありがとうございます。間違いや失敗しててもなかなか気付かないので助かります。