ソラマメブログ

2008年05月29日

プロフィール写真を表示してみよう(その3)

Arare Cafe に置いてもらったボード バグが心配で注意していたら どうも 途中で変更されなくなっているようなので
-----
何が悪いんかな~ とスクリプトとにらめっこ
-----
う~ん わからん
-----
わからんが これ どんどんリストが増えていくから ある時点で確実に メモリオーバーしちゃうよな~
-----
というわけで 上限値を設定し リストの個数がそれ以上になったら リセットさせることにした
-----
とりあえず 上限値は 100 に設定してみた
-----
前のままだと 後でプロフィール写真を設定しても 設定されてない という情報がリストに載ってしまっているため
-----
表示させることはできなかったのだけれど これなら リセットされた後のタイミングに来たら 表示させることができるので 同時に その問題も解決
-----
というわけで 自分のプロフィール写真を Arare Cafe で表示させたい人は 来るだけで OK
-----
ただ また 100人に達したところでリセットされてしまうけどね 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;
integer max_photo_idx = 100;
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 >= max_photo_idx) {
llResetScript();
return;
}
if (cur_photo_idx >= llGetListLength(photo_list)) {
cur_photo_idx = 0;
}
if (llStringLength(photo) != 0) {
llSetTexture(photo, 1);
return;
}
}
}
}

カウンターの後ろ右側がそれ
-----

-----
あ 今日 Wafun さんの声の人が来るらしいよ w
-----
そうそう 先日 衣装のテクスチャ入りという本をちらちらみていたら その p96 だったかな
-----
セーラー服の背景が Arare Cafe でたまたま 今左側に表示されている写真が写ってたんだが
-----
このドラゴン 私だったりする w
-----
ほぼ 初期 AV の後姿で何かに載ったような気もするけど 変な気分 w

同じカテゴリー(walking のスクリプティング講座)の記事
 プロフィール写真の表示に問題 (2009-11-30 20:55)
 ミニ太陽系 (2009-03-21 06:03)
 関数から文字列を返したら何か問題になる? (2009-03-18 18:02)
 llListFindList って型って関係ないんだったっけ (2009-03-18 14:02)
 夏時間(PDT)の実験 (2009-03-08 22:04)
 15パズルの作り方(その3) (2009-03-08 06:03)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。