2008年05月26日
プロフィール写真を表示してみよう
やりかたは分かったけれど 実際に使ってみるまで実際に分かったとは言えない というわけで 試してみた...
-----
-----
Arare Cafe でテスト w
-----
できてるな というわけで ソース
同じ場所に Transparent という透明なテクスチャを入れている(別にこれは必須ではないよ)
-----
面の 1に表示するようにしていて 他の面には Transparent を貼ってある
-----
60秒毎にセンサーを起動して まだリストに登録していない人がいたら そのプロフィール写真を調べるよう指示する
-----
プロフィール写真が見つかったらリストに登録
-----
見つからなかったら 空文字列を登録
-----
60秒毎に 表示のために起動するようにし リスト中のプロフィール写真を順々に表示する
-----
という感じのスクリプト w
-----
-----
Arare Cafe でテスト w
-----
できてるな というわけで ソース
integer i;
list name_list = [];
list photo_list = [];
key requestid;
string name;
float scan_interval = 60.0;
float disp_interval = 60.0;
integer cur_photo_idx = 0;
integer found_one_photo = 0;
default
{
state_entry() {
llSetTexture("Transparent", 1);
llSensorRepeat("", NULL_KEY, AGENT, 20.0, PI, scan_interval);
llSleep(10.0);
llSetTimerEvent(disp_interval);
}
on_rez(integer start_param) {
llResetScript();
}
sensor(integer num_detected) {
for (i = 0; i < num_detected; i++) {
name = llDetectedName(i);
if (llListFindList(name_list, [name]) == -1) {
llOwnerSay(name + " is possibly added to list");
requestid = llHTTPRequest("http://world.secondlife.com/resident/"
+ (string)llDetectedKey(i), [HTTP_METHOD,"GET"], "");
return;
}
}
}
http_response(key request_id, integer status, list metadata, string body) {
if (request_id == requestid) {
integer i = llSubStringIndex(body, "http://secondlife.com/app/image/");
if(i != -1) {
string photo = llGetSubString(body, i + 32, i + 67);
name_list = name_list + [name];
photo_list = photo_list + [photo];
found_one_photo = 1;
llOwnerSay(name + " is added to list");
} else {
name_list = name_list + [name];
photo_list = photo_list + [""];
}
}
}
timer() {
while ((found_one_photo == 1) && (cur_photo_idx < llGetListLength(photo_list))) {
string photo = llList2String(photo_list, cur_photo_idx);
cur_photo_idx++;
if (cur_photo_idx >= llGetListLength(photo_list)) {
cur_photo_idx = 0;
}
if (llStringLength(photo) != 0) {
llSetTexture(photo, 1);
return;
}
}
}
}
同じ場所に Transparent という透明なテクスチャを入れている(別にこれは必須ではないよ)
-----
面の 1に表示するようにしていて 他の面には Transparent を貼ってある
-----
60秒毎にセンサーを起動して まだリストに登録していない人がいたら そのプロフィール写真を調べるよう指示する
-----
プロフィール写真が見つかったらリストに登録
-----
見つからなかったら 空文字列を登録
-----
60秒毎に 表示のために起動するようにし リスト中のプロフィール写真を順々に表示する
-----
という感じのスクリプト w
Posted by walkinglint at 10:03│Comments(0)
│walking のスクリプティング講座