Site search

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

2008年9月22日月曜日

プロフ写真を表示するスクリプト

今回はプロフの写真を表示するスクリプトです。ちょっと出かけて、はっと気がついたら自分の写真が表示されてたってことよくありますよね^^;;

Random AV Profile Projectorが公開されてるので、これをそのまま使用してるのが多いと思いますw あと、スクリプト得意な方はこれを解読して使うのかなって思いますけど、私は頭弱いので長いの読むの苦手なんですよwww

でも仕組みは理屈がわかれば簡単なんです。アバターのプロフィールのページがあって(<UUID>のところはアバターのキー)
http://world.secondlife.com/resident/<UUID>
そのページにある画像(プロフ写真)のURLに、インワールドのプロフ写真のテクスチャUUIDが含まれているんですよ。
<img alt="profile image" src="http://secondlife.com/app/image/<テクスチャUUID>/1" class="parcelimg" />

写真を貼ってないプロフのページの画像は下記のようにURLが違うので、上記のような画像URLが含まれてたら、その部分からUUIDを取得するようにしたらいいですよね^^
<img alt="profile image" src="http://world.secondlife.com/images/blank.jpg" class="parcelimg" />

これだけわかれば、あとはllHTTPRequestと文字列の処理ができればオッケーだと思います^^


タッチしたアバターのプロフ写真をプリムの面番号0に表示するようにしてみました。
// プロフィール写真取得
key http_request_id;

default
{
    touch_start(integer total_number)
    {  // タッチすると
        key agent=llDetectedKey(0);  // アバターのキー取得
        string url="http://world.secondlife.com/resident/";
        url+=(string)agent;  // プロフのURL
        http_request_id=llHTTPRequest(url,[],"");  // HTTPリクエスト送信
    }

    http_response(key request_id, integer status, list metadata, string body)
    {
        if (request_id == http_request_id)
        {
            string img_url="http://secondlife.com/app/image/";  // プロフ写真用URL
            integer j=llStringLength(img_url);  // URLの長さ
            integer i=llSubStringIndex(body,img_url);  // bodyの写真URLの位置
            if (i > -1) {  // 写真があったら
                string str=llGetSubString(body,i+j,-1);  // UUIDまでの位置
                i=llSubStringIndex(str,"/");  // UUIDの後の/までの位置
                str=llGetSubString(str,0,i-1);  // UUID
                llSetTexture(str,0);  // 面番号0にプロフ写真表示
            }
            else {  // 写真がないとき
                llSay(0,"No image");
            }
        }
    }
}



2010年7月9日追記: プロフページの仕様が変わって、もうヘッダ部分から取得するようにしないと動作しないと思います。
http://shop-chihiro.blogspot.com/2010/04/blog-post.html

0 件のコメント:

コメントを投稿