2008年05月11日
プロフィールの写真を取得しパネルに表示するスクリプト2

前回のエントリーで紹介した
プロフィール写真を取得するスクリプトは、
touch_startを使っています。
state_enrtry()内にllSensorRepeatの命令を書き加え、
touch_startのアクションをsenorに変更すれば、
やってきたお客さんのプロフィール写真を自動取得してくれるはず。
今、Club Fabulous Tokyoのエントランスにて、
その修正スクリプトを利用したPhotobookを設置して実験をしています。
みなさんにもぜひご協力いただければと思います。
なお、touch_startのスクリプトを埋め込んだPhotobookは、
クラブのメインダンスホールで無料配布中です。
こちらも、ぜひご活用ください。 続きを読む
2008年05月11日
プロフィールの写真を取得しパネルに表示するスクリプト

Hazukiさんのブログ「Hazuki's Script」の記事
「プロフィールの写真」に触発され、
来場者が自分のプロフィール写真を表示させられるフォトブックといいますか、
パネルを作成しました。
アバターがパネルにタッチすると、プロフィール写真のUUIDを取得し、
それを子プリムに送信、タッチした日付とアバター名がパネルに表示されます。
日付とアバター名を子プリムに送信するため、
親プリムと子プリムにそれぞれスクリプトを入れる必要があります。
下記の2つがそれです。
スクリプトには、ひとつ解決していない問題があります。
それはプロフィールに写真を設定していない人がタッチしたときにエラーがでること。
まだ、それを回避する命令は思いついておらず、入れていません。
ところでこのスクリプトは
SLmameで得た情報から作成したものですので、
この場に還元したいと思います。
みなさんも、いろいろ試してみてください。
なお、すぐに現物が見たい、現物で遊んでみたいという方は、
Club Fabulous Tokyoのダンスホールにパネルを設置してあります。
また、あわせて現物の無料配布も行っていますので、
クラブにお越しください。お待ちしています。
===================================================
親プリム用スクリプト
===================================================
key requestid;
string resident;
integer index;
integer number = 2;//親プリムの番号が1なので、2からスタート。
list names = [];
integer name;
default
{
state_entry()
{
llSetText("Visitors' Profile Photos\nTouch the panel and add your photo!", <1,1,1>, 1);//パネル上部に表示されるテキスト、文は適宜変更。
llSetLinkTexture(LINK_ALL_CHILDREN, "woodpaneling", ALL_SIDES);//"woodpaneling"はデフォルト時の子プリムのテクスチャー名。コピー可のテクスチャーを親プリムに入れ、名称をここに挿入。
llMessageLinked(LINK_ALL_CHILDREN, 0, " ", NULL_KEY);
}
touch_start(integer num_detected)
{
resident = llKey2Name(llDetectedKey(0));
name = llListFindList(names, [resident]);//タッチした人の名前をリストに探す。
if(name == -1)//写真が表示されている人を除く。
{
index = llFloor(llFrand(num_detected));
requestid = llHTTPRequest("http://world.secondlife.com/resident/"+(string)llDetectedKey(index),[HTTP_METHOD,"GET"],"");//プロフィール写真の取得。
names = names + [resident];//写真を表示した人をリストに追加。
}
}
http_response(key request_id, integer status, list metadata, string body)
{
if (request_id == requestid)
{
integer i = llSubStringIndex(body,"http://secondlife.com/app/image/");
llSetLinkTexture(number,(string)llGetSubString(body,i+32,i+67),1); //プロフィール写真の子プリムへの送信。
llMessageLinked(number, 0, (string)(llGetDate() + " " + resident), NULL_KEY);//タッチした日付、アバター名の子プリムへの送信。
number++;
if(number == 18)//クラブでは写真を表示させるプリムを16個に設定。17番目のプリムまで写真表示(つまり16枚)。適宜変更。
{
number = 2;//番号が18になったら、最初に戻る。
names = [];//リストをブランクに。一度写真を表示した人も表示できるように。
}
}
}
}
===================================================
子プリム用スクリプト
===================================================
default
{
link_message(integer sender_num, integer num, string str, key id)//親プリムのllMessageLinked待ち。
{
llSetText(str, <1,1,1>, 1);//親プリムから送られてきたテキストを表示。
}
}
===================================================

2008年05月11日
追加: 窓の透明度を変えるスクリプト



一昨日から無料配布している、
窓の透明度を調整するスクリプトですが、
もっとシンプルなバージョンもあわせて配布しています。
これまで配布していたのは、llMessageLinkedで
それぞれのプリムをつなぐバージョンで、
たとえば建物全体をリンクでつないでいても、
子プリム用のスクリプトを埋め込んだ部分だけの
透明度を変えることができるものでした。
新たに追加したのは、親プリムにスクリプトを入れるだけで、
リンクされた子プリムの透明度を一括変換してくれます。
とはいえ、建物などをすべてリンクしている場合、
建物全体が透明になってしまったりするので、
場合によって使い分けることをお勧めします。
また、llMessageLinkedは、子プリムを番号で指定することができますが、
何も考えないでリンクをした場合、うまく作動しないことがあるので、
ここではご紹介していません。
スクリプトはClub Fabulous Tokyoのダンスホールで無料配布中です。
ご興味のある方は、スクリプトを入手し、いろいろ試してみてください。 続きを読む