リンデンのアバタープロフィールウェブページ改変が原因で、Online indicatorとOnline indicator (MT)、Online status LCD monitorの3機種にスクリプトが停止する可能性のある致命的なバグを確認しました。
その3機種は下記のような感じでUUIDを取り出していたので、プロフィールに書いた文章の長さに依存しますが、llHTTPRequestの2048バイトの制限でimgタグ部分のテクスチャUUIDが途中で切れた場合に無限ループに陥ってしまいます。
ウェブページの画像部分
<img alt="profile image" src="http://secondlife.com/app/image/00000000-0000-0000-0000-000000000000/1" class="parcelimg" />
スクリプトのUUID取得部分
string img_url="http://secondlife.com/app/image/";
integer i=llSubStringIndex(body,img_url);
integer l=llStringLength(img_url);
string texture;
if (0 < i) {
string s;
for (i+=l; s != "/"; i++) {
texture+=s;
s=llGetSubString(body,i,i);
}
}
オンラインインジケータを作った当時は、プロフページのヘッダ部分が将来こんなに拡張されて長くなるなんて思いもしなかったんですよね。。。orz
商品は修正してバージョンアップしました。
Online indicator V1.1.2
Online indicator (MT) V1.1.2
Online status LCD monitor V1.0.3
コピー可能なOnline indicatorは一応取引履歴を保存してるので、アップデート品をお届けしようと思ってますが、他2機種はコピー不可、譲渡可なので、お手数ですが交換という形になります。ご自分のアバター名のフォルダに入れて、フォルダごと送ってください。宜しくお願いします。 m(_ _)m
Avatar profile web page has changed by Linden and a critical bug of the script infinite loop occurred in our 3 products, those are Online indicator, Online indicator (MT) and Online status LCD monitor. (that is Linden's fault... I'm sad)
Our products have been fixed for changed web page, and fixed versions are,
Online indicator V1.1.2
Online indicator (MT) V1.1.2
Online status LCD monitor V1.0.3
I might send fixed version of Online indicator (copy, no transfer edition), but other 2 products are 'transfer'... therefore, put in your avatar name folder and send that folder to me for change.
11月29日3時30分頃追記: アップデート品の発送作業終了しました。発送装置で送ったので、もし受け取れなかったお客様はご連絡くださいね。 Sending updated Online indicator has been done.
12月3日追記: ウェブページがまた変更されて、ヘッダ部分にコメントアウトで画像部分のタグのコピーが挿入されてました。
<!-- <img alt="profile image" src="http://secondlife.com/app/image/00000000-0000-0000-0000-000000000000/1" class="parcelimg" /> -->
この変更により従来のスクリプトでまたプロフ写真が取得可能になって、うちの旧オンラインインジケータもバグで止まる心配がなくなりました^^
Avatar profile web page has changed again. Our old version online indicators have no problem now.
2009年11月28日土曜日
またリンデンの改悪に悩まされる
オンラインインジケータをRezしたときに気がついたんですが、アバタープロフィールのウェブページ (http://world.secondlife.com/resident/アバターのUUID) のヘッダ部分が前より長くなってて、紹介文をいっぱい書いてる人はプロフ写真がゲットできなくなってました。。。><
<meta name="imageid" content="テクスチャUUID" />
<meta name="agentid" content="アバターUUID" />
たぶんヘッダにこういうのとかが追加されたのでimg要素のタグが書かれてる部分まで読めなくなったんだと思うんですよ。なので代わりにこのmetaタグからテクスチャのUUIDを取り出すように変更しないといけないですね;;
リンデンの方も、プロフィール写真を取得するスクリプト製品があることぐらい知ってると思うのに、ホント何でこんな身勝手なことするんでしょうかね。。。(-ω-;)
12月3日追記: 今日プロフページのソースを確認してみたら、ヘッダ部分にコメントアウトで画像タグ部分のコピーが挿入されてました。これでまた今までのスクリプトでも取得可能に戻りましたね^^
<meta name="imageid" content="テクスチャUUID" />
<meta name="agentid" content="アバターUUID" />
たぶんヘッダにこういうのとかが追加されたのでimg要素のタグが書かれてる部分まで読めなくなったんだと思うんですよ。なので代わりにこのmetaタグからテクスチャのUUIDを取り出すように変更しないといけないですね;;
リンデンの方も、プロフィール写真を取得するスクリプト製品があることぐらい知ってると思うのに、ホント何でこんな身勝手なことするんでしょうかね。。。(-ω-;)
12月3日追記: 今日プロフページのソースを確認してみたら、ヘッダ部分にコメントアウトで画像タグ部分のコピーが挿入されてました。これでまた今までのスクリプトでも取得可能に戻りましたね^^
2009年11月26日木曜日
2ヶ所に使えるカラーチェンジメニュー
今回は何となく複数ヶ所に適用できるようなカラーチェンジメニューのサンプルスクリプトです。最初のメニューでカラーチェンジする部分を選択して、次のメニューで色を選択する2段階のメニューになります。

サンプルでは、お家っていうかオモチャの小屋って感じでしょうかね。。。壁の部分と屋根の部分の2ヶ所でそれぞれカラーチェンジできるメニューになってます。
カラーチェンジの色は共用で、color_nameのリストの色名に対する色のベクトル値をcolor_valueに記入しています。それでmenuっていう変数に入ってる値によって、どの部分のカラーチェンジかを判断するようにしました。(色を共用しない場合はこの辺りそのまま使えないかもですけどw)
ダイアログはサブメニューでも呼び出すのでユーザー関数にしてます。それから一応メニューは無視したとき10分でタイムアウトするようにしました。
色値のリストをテクスチャのUUIDにして、llSetColor、llSetLinkColor、llList2Vectorの代わりにllSetTexture、llSetLinkTexture、llList2Keyを使ったらテクスチャチェンジにも応用できると思います^^
1時30分頃追記: サンプルでは、お家っていうかオモチャの小屋。。。って、画像を載せるの忘れてました。今アップロードしました^^;;

サンプルでは、お家っていうかオモチャの小屋って感じでしょうかね。。。壁の部分と屋根の部分の2ヶ所でそれぞれカラーチェンジできるメニューになってます。
カラーチェンジの色は共用で、color_nameのリストの色名に対する色のベクトル値をcolor_valueに記入しています。それでmenuっていう変数に入ってる値によって、どの部分のカラーチェンジかを判断するようにしました。(色を共用しない場合はこの辺りそのまま使えないかもですけどw)
// 2ヶ所用カラーチェンジメニュー
integer listen_handle;
integer CHANNEL;
string menu; // 選択されたメニューの一時記憶用
list main_menu=["Wall color","Roof color"]; // メインメニュー
list color_name=["White","Red","Green","Blue"]; // 色名リスト
list color_value=[<1,1,1>,<1,0,0>,<0,1,0>,<0,0,1>]; // 色値リスト
dialog(key id, string text, list menu_list)
{
llListenRemove(listen_handle); // リッスン解除
CHANNEL=llCeil(llFrand(2147483646)); // チャンネルを乱数で決める
llSetTimerEvent(600); // タイマー10分
listen_handle=llListen(CHANNEL,"",id,""); // リッスン開始
llDialog(id,text,menu_list,CHANNEL); // ダイアログメニューを出す
}
default
{
touch_start(integer total_number)
{
key id=llDetectedKey(0); // タッチしたアバターのキー
if (id == llGetOwner()) { // オーナーのみに限定
menu=""; // 変数menuを初期化
dialog(id,"Menu",main_menu); // dialogへ
}
}
timer()
{
llSetTimerEvent(0); // タイマー停止
llListenRemove(listen_handle); // リッスン解除
}
listen(integer channel, string name, key id, string msg)
{
llSetTimerEvent(0);
llListenRemove(listen_handle);
if (channel == CHANNEL && id == llGetOwner()) {
if (msg == "Wall color") { // 壁用メニュー
dialog(id,"Wall color change",color_name);
}
else if (msg == "Roof color") { // 屋根用メニュー
dialog(id,"Roof color change",color_name);
}
else if (menu == "Wall color") { // 壁のメニューだったとき
vector v=llList2Vector(color_value,llListFindList(color_name,[msg])); // 色名から色値を得る
llSetColor(v,ALL_SIDES); // 壁(親プリム)に着色
}
else if (menu == "Roof color") { // 屋根のメニューだったとき
vector v=llList2Vector(color_value,llListFindList(color_name,[msg]));
llSetLinkColor(LINK_ALL_CHILDREN,v,ALL_SIDES); // 屋根(子プリムに着色
}
menu=msg; // 選択されたメニューを記憶
}
}
}
ダイアログはサブメニューでも呼び出すのでユーザー関数にしてます。それから一応メニューは無視したとき10分でタイムアウトするようにしました。
色値のリストをテクスチャのUUIDにして、llSetColor、llSetLinkColor、llList2Vectorの代わりにllSetTexture、llSetLinkTexture、llList2Keyを使ったらテクスチャチェンジにも応用できると思います^^
1時30分頃追記: サンプルでは、お家っていうかオモチャの小屋。。。って、画像を載せるの忘れてました。今アップロードしました^^;;
2009年11月22日日曜日
Group joiner(グループ加入装置)
集客用品にグループ限定機能を取り付けてから、一応グループ加入装置も売ってたほうがいいかなって思ってグループジョイナーを作りました。根本的な仕組みはめっちゃ簡単なんですけどねw
http://backup-beta.blogspot.com/2008/07/blog-post_9522.html
タッチするとチャットにグループインフォメーションのリンクを表示して、そこから加入するタイプで、自動招待ではありません。ダイアログから直接グループ招待するタイプはアバター(ボットですね)を使わないと無理だと思います。
仕組みが簡単なので最初フリーアイテムにするつもりだったんですが、使いやすくなるようにテキトーに機能を付けてたら結構複雑になってきて製作期間も長引いたので(まぁのんびり作りましたがw)、お値段はちょっと高めの50L$にしました^^;

セットアップは、自分のアバターに対象のグループタグをアクティブにした状態で装置をRezするだけでオッケーです。
片面表示のと両面表示の2種類のボードがセットになってて、プロフ写真を表示するのと同じような感じで、グループ記章を自動で取得して表示します。ただ、グループの場合はテクスチャのUUIDが書かれてる部分が2kBを超えてしまって取得できなかったのでPipesを使ってます。
フローティングテキストの表示やグループ加入メッセージは設定用ノートで編集可能なようにしました。あと、オーナーはタッチされたカウント数をチェックできます。
Mansion Mall店、Market Beach Mall East店、Dirty Secrets店に置いてきました。宜しくお願いします^^
11月28日追記: アバターのプロフと同じようにグループのウェブページも変更されて、Pipesなどを使わなくてもグループ記章が直接取得できるようになったので(昔のとは方法がちょっと違いますが)スクリプトを修正しました。バージョンは1.0.1になります。あと、SL-Shopping.net-Mall店とDirty Secrets店(新)にも置いてきました。
http://backup-beta.blogspot.com/2008/07/blog-post_9522.html
タッチするとチャットにグループインフォメーションのリンクを表示して、そこから加入するタイプで、自動招待ではありません。ダイアログから直接グループ招待するタイプはアバター(ボットですね)を使わないと無理だと思います。
仕組みが簡単なので最初フリーアイテムにするつもりだったんですが、使いやすくなるようにテキトーに機能を付けてたら結構複雑になってきて製作期間も長引いたので(まぁのんびり作りましたがw)、お値段はちょっと高めの50L$にしました^^;

セットアップは、自分のアバターに対象のグループタグをアクティブにした状態で装置をRezするだけでオッケーです。
片面表示のと両面表示の2種類のボードがセットになってて、プロフ写真を表示するのと同じような感じで、グループ記章を自動で取得して表示します。ただ、グループの場合はテクスチャのUUIDが書かれてる部分が2kBを超えてしまって取得できなかったのでPipesを使ってます。
フローティングテキストの表示やグループ加入メッセージは設定用ノートで編集可能なようにしました。あと、オーナーはタッチされたカウント数をチェックできます。
Mansion Mall店、Market Beach Mall East店、
11月28日追記: アバターのプロフと同じようにグループのウェブページも変更されて、Pipesなどを使わなくてもグループ記章が直接取得できるようになったので(昔のとは方法がちょっと違いますが)スクリプトを修正しました。バージョンは1.0.1になります。あと、SL-Shopping.net-Mall店とDirty Secrets店(新)にも置いてきました。
2009年11月21日土曜日
Zindra大陸で借りた店舗
Zindraで借りてる1店舗を主要店舗に加えることにしました。このモールでレンタルし始めたのは8月頃なんですが、前は道路側の斜めに配置された店舗を借りてたので、商品設置もちょっと不便だったし、向きの関係でテレポートしてきたら入り口が背中側になるので、そんなにいい場所じゃなかったと思うんですよ。。。借りた頃はTP地点もモール隣接のダンスホールみたいな場所に設定されたりしてたので、それでも条件は良くなってるんですけどねw
それで今月に入って、良さそうな位置の店舗スペースが空いてたのでそっちへ移動したんです。宜しくお願いします^^

Dirty Secrets店
http://slurl.com/secondlife/Orburs/239/169/59
Zindra大陸はアダルト専用の大陸としてセカンドライフ公式ブログとかで報道されてたので何となくご存知の方も多いんじゃないかなって思うんですが、クレジットカード登録かアダルト認証がされたアバターでないと入れません。
11月23日追記: 主要店舗に加えたばかりなのにモールが改装されるって通知がきました。。。orz
11月24日追記: まだ改装が全店舗終わってなさそうなので不安なんですが、とりあえずこちらに移動しました。
http://slurl.com/secondlife/Orburs/241/160/64
2010年1月20日追記: 東側に空いてた広めの店舗に移転させました。何かモール改装後は売り上げが全然なくて、他のテナントさんもほとんど撤退しちゃってるんですよ。なので、この状況だったら経営者がいつモール閉めてもおかしくない感じですね。もう暫く様子を見て売れなかったら私も撤退します。
2010年2月27日追記: 移転してから少し売れたので何となくまだ借りてるんですが、いつの間にかモールの名前がLakeland Dark Mallに変わってました。これで借りてから名前変わったの2回目ですよ。。。何かやっぱり安定してる感じがしないですね^^;
2010年4月15日追記: このモールは先月末に無くなりました。
それで今月に入って、良さそうな位置の店舗スペースが空いてたのでそっちへ移動したんです。宜しくお願いします^^

Zindra大陸はアダルト専用の大陸としてセカンドライフ公式ブログとかで報道されてたので何となくご存知の方も多いんじゃないかなって思うんですが、クレジットカード登録かアダルト認証がされたアバターでないと入れません。
11月23日追記: 主要店舗に加えたばかりなのにモールが改装されるって通知がきました。。。orz
11月24日追記: まだ改装が全店舗終わってなさそうなので不安なんですが、とりあえずこちらに移動しました。
2010年1月20日追記: 東側に空いてた広めの店舗に移転させました。何かモール改装後は売り上げが全然なくて、他のテナントさんもほとんど撤退しちゃってるんですよ。なので、この状況だったら経営者がいつモール閉めてもおかしくない感じですね。もう暫く様子を見て売れなかったら私も撤退します。
2010年2月27日追記: 移転してから少し売れたので何となくまだ借りてるんですが、いつの間にかモールの名前がLakeland Dark Mallに変わってました。これで借りてから名前変わったの2回目ですよ。。。何かやっぱり安定してる感じがしないですね^^;
2010年4月15日追記: このモールは先月末に無くなりました。
2009年11月20日金曜日
フィードリーダーに不具合出てた
Bloggerでブログ書き始めたときFeed readerの不具合に気がついて、そのとき修正して動作もOKになったはずなのに、いつの間にか記事数の少ないブログ(10記事に満たないブログ)でフィードが読めなくなってました;;
あるブログのフィードが読めなかったので、数日前から原因をいろいろ調べてたんですね。それで、やっと原因がわかりました。Pipesで記事数の少ないフィードは、Tailモジュールが原因でエラーが出て読めなくなってたんですよ。。。んー、Pipesの仕様が変わってたってことなんでしょうかね。前回の修正のとき記事数少なかったこのブログで動作チェックして読めてましたから、たぶんそうだと思います。
Tailモジュールが問題らしいって気がついた後、もう修正無理かもって思ってかなり悩んだんですが、TruncateモジュールをReverseモジュール2個で挟んだら代用できました。何とか直せてよかったです^^;
15時頃追記: フィードリーダー本体も少し修正しました。バージョンはV1.0.5になります。
あるブログのフィードが読めなかったので、数日前から原因をいろいろ調べてたんですね。それで、やっと原因がわかりました。Pipesで記事数の少ないフィードは、Tailモジュールが原因でエラーが出て読めなくなってたんですよ。。。んー、Pipesの仕様が変わってたってことなんでしょうかね。前回の修正のとき記事数少なかったこのブログで動作チェックして読めてましたから、たぶんそうだと思います。
Tailモジュールが問題らしいって気がついた後、もう修正無理かもって思ってかなり悩んだんですが、TruncateモジュールをReverseモジュール2個で挟んだら代用できました。何とか直せてよかったです^^;
15時頃追記: フィードリーダー本体も少し修正しました。バージョンはV1.0.5になります。
2009年11月17日火曜日
アニメーションベンダー V2.1.0 ボタンが4色変更できます^^
この前バージョンアップしたAnimation vendorなんですが、フロントパネルのボタンの色を4色からカラーチェンジできるようにしてみました。ポーズ・アニメーションの種類や、お店の雰囲気とかで色を変えて設置したら、何となく良さそうじゃないでしょうかね^^

旧アニメーションベンダーは1プリムモードのとき、1プリムベンダーのテクスチャを流用してたので(まあ手抜きともいいますw)、押したときボタンの矢印が赤く点灯するようになってたんですが、V2.0.0からはボタンを押すとボタンの部分が押し下げられたような感じの動作になります。
その他、今回のバージョンではアイテムリスト周りを中心にいくらか見直しましたが、目立った変更点は、アイテム名(アニメーション名)を記入ミス(綴りミス)したときに、そのアイテムを表示させたときにもエラーメッセージを出すようにしました。これは1プリムベンダー、1プリム9アイテムベンダー、1プリム16アイテムベンダー、フリーベンダーも同様の変更をしました。。。ベンダーで一番多かった苦情の原因がアイテム名の綴りミスなんですよ。コンテンツに無いアイテム名は売ることできないのでテクスチャを暗く表示させて支払いできないようにしてたんですが、一部のアイテムが表示が黒くなるってよくIMきましたw(マルチパネルベンダーはまだですが近日中にバージョンアップ予定です)
アップデートご希望の購入者様はご連絡くださいね。宜しくお願いします^^
22時25分頃追記: 記事タイトルのアニメーションベンダーのバージョンを間違えてV1.1.0って書いちゃってたので直しました^^;;
11月18日追記: マルチパネルベンダーもバージョンアップ完了しました。
11月19日追記: Mansion Mall店にアニメーションベンダーを展示しました。宜しくお願いします^^

旧アニメーションベンダーは1プリムモードのとき、1プリムベンダーのテクスチャを流用してたので(まあ手抜きともいいますw)、押したときボタンの矢印が赤く点灯するようになってたんですが、V2.0.0からはボタンを押すとボタンの部分が押し下げられたような感じの動作になります。
その他、今回のバージョンではアイテムリスト周りを中心にいくらか見直しましたが、目立った変更点は、アイテム名(アニメーション名)を記入ミス(綴りミス)したときに、そのアイテムを表示させたときにもエラーメッセージを出すようにしました。これは1プリムベンダー、1プリム9アイテムベンダー、1プリム16アイテムベンダー、フリーベンダーも同様の変更をしました。。。ベンダーで一番多かった苦情の原因がアイテム名の綴りミスなんですよ。コンテンツに無いアイテム名は売ることできないのでテクスチャを暗く表示させて支払いできないようにしてたんですが、一部のアイテムが表示が黒くなるってよくIMきましたw(マルチパネルベンダーはまだですが近日中にバージョンアップ予定です)
アップデートご希望の購入者様はご連絡くださいね。宜しくお願いします^^
22時25分頃追記: 記事タイトルのアニメーションベンダーのバージョンを間違えてV1.1.0って書いちゃってたので直しました^^;;
11月18日追記: マルチパネルベンダーもバージョンアップ完了しました。
11月19日追記: Mansion Mall店にアニメーションベンダーを展示しました。宜しくお願いします^^
登録:
投稿 (Atom)
