2009年11月28日土曜日

Online indicator fixed

リンデンのアバタープロフィールウェブページ改変が原因で、Online indicatorOnline 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.

またリンデンの改悪に悩まされる

オンラインインジケータをRezしたときに気がついたんですが、アバタープロフィールのウェブページ (http://world.secondlife.com/resident/アバターのUUID) のヘッダ部分が前より長くなってて、紹介文をいっぱい書いてる人はプロフ写真がゲットできなくなってました。。。><

<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)

// 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店(新)にも置いてきました。

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日追記: このモールは先月末に無くなりました。

2009年11月20日金曜日

フィードリーダーに不具合出てた

Bloggerでブログ書き始めたときFeed readerの不具合に気がついて、そのとき修正して動作もOKになったはずなのに、いつの間にか記事数の少ないブログ(10記事に満たないブログ)でフィードが読めなくなってました;;

あるブログのフィードが読めなかったので、数日前から原因をいろいろ調べてたんですね。それで、やっと原因がわかりました。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店にアニメーションベンダーを展示しました。宜しくお願いします^^

2009年11月16日月曜日

有名なブログに出した広告。。。でも哀しいアクセス数;;

iheartsl.comに広告出したら結構いいかもって思って、11日から半月契約でラッキーレターの広告出してみたんですね。新しくlucky letter oneがセットになったって感じの広告なので、ホントは先月中に出すつもりだったんですが、広告から直接お店へのSLURLのリンクだとアップデートサービスあるのわかりにくいかなって思ったので、ラッキーレター専用のウェブページ作ってたら遅くなっちゃって11月過ぎてしまったんですが^^;

それで結構アクセスあるだろうなって思って、一応アクセスカウンタ付けといたんですね。そして、次の日、その次の日・・・、毎日ドキドキしながらアクセス数チェックしてたんですが。。。ガーン。1日あたり1~2人くらいしか見に来てないみたいでした orz

右サイドバーのスポンサー広告って、そんなに目に入らないものなんでしょうかね? それか私の広告が興味をそそらないから?^^; んー、難しいですね。広告費2500L$もしたのにwww

2009年11月15日日曜日

Greeter V1.1.0

訪問者をセンサーでキャッチしてノートやランドマークを渡すグリーターっていう装置を販売してるんですが、メッセージの設定部分とか結構修正して、ついでにカウンターを取り付けてみました^^

この装置を最初に作ったとき、ほとんど売れないんじゃないかなって思ってたので、あまり時間かけてなくて結構手抜きな部分もあったんですね^^;;

本バージョンでは英語と日本語を並べて挨拶するような設定も可能です。
○○, welcome to our shop !
○○様、ご来店有難うございます!


ビジターカウンターはフローティングテキストで、今日、昨日、合計の訪問者数を表示します。日付の切り替わりはSL時間基準です。あと、他にも色々見直した部分があって、スクリプトは3分割にしてメモリに余裕を持たせました。

それで、かなり改良したので思い切ってL$100に値上げしてみました。。。元L$50だったので倍ですねw

今回のバージョンアップはバグ修正じゃないんですが、旧バージョンのグリーター購入者様には、今夜中にアップデート品をお届けしたいと思います。宜しくお願いします^^

11月16日0時30分頃追記: 発送作業完了しました。もし届いてない方、受け取れなかった方おられましたら、お手数ですがご連絡くださいね。(発送装置で送りました)

11月17日20時頃追記: V1.1.0に誰もいないときカウンターがOFFの表示になる不具合が見つかって、先ほど購入者様には修正版お送りしました。。。何度もすみません^^; バージョンは1.1.1になります。

2009年11月13日金曜日

これはXstreet SLの改悪だと思う

たぶん8月末にセカンドライフの公式サイトがリニューアルされたとき、一緒に変わってたんじゃないかなって思うんですが、Xstreet SLの商品販売ページにある販売者のプロフへのリンクが変なアドレスになってるのに気がつきました。。。;
https://blogs.secondlife.com/people/Chihiro.Owatatsumi
これってセカンドライフ公式ブログに投稿やコメントしたときにリンクされるプロフィールじゃないでしょうかね。。。こんなページ通販と全然関係ないし、お店のSLURLとかも記載できないですよね?

改定前はこんな感じのアドレスで
https://xstreetsl.com/forum_archive/modules.php?name=Forums&file=profile&mode=viewprofile&u=マーチャントID番号
このページにはXstreet SLに登録した自分のウェブサイトへのリンクとかhttp://world.secondlife.com/resident/<UUID>のリンクが表示されてたので、お客様がそこからインワールド内のショップを簡単に見つけて、直接お店に行ったりできたと思うんですよ。
アバター名で検索したら同じようにショップのSLURLに辿り着けますけど、手間が増えるのでXstreetからの来店は前より減ってるんじゃないでしょうかね;;

あと、日本語化されたカテゴリの和訳が思いっきり間違えてるところがありましたw
https://www.xstreetsl.com/modules.php?name=Marketplace&CategoryID=409&lang=ja
ホーム -> 制作用コンポーネント -> 制作ヘルプ用 -> スクリプト化されたプリム
英語ページのカテゴリは Home -> Building Components -> Building Aids -> Sculpted Prims です。スカルプテッドとスクリプテッドって、まあ何となく似てますけど、慌てて日本語化しなくってもいいのにwww

2009年11月9日月曜日

ラッキーレターone ダーク

Lucky letter one(1プリム版ラッキーレター)に暗めの色のスキンを作って、デフォルトとブラックレターとこのスキンを切り替えられるメニューを増設しました。

暗めの色にしてもラッキーなイメージもほしかったので文字の部分はゴールドなんですよ^^

あと、スクリプトでカメラを操作して遠くにいるアバターの位置に視界を持っていける装置があるみたいなので、今回のバージョンから20m以内に来てタッチしないといけない制限をつけました。
Lucky letter V1.5.4
Lucky letter one V1.0.2

通常版の旧バージョンをお買い上げのお客様はMansion Mall店ほか数店舗に設置してるアップデートサービスご利用くださいね。宜しくお願いします^^

2009年11月5日木曜日

Animation vendor V2.0.0

発売中のアニメーションベンダーを大幅に改良してバージョンを2.0.0に上げました^^

フロントパネル部分を押しやすいように少し斜めにして、ちょっと頑張ってパネルのテクスチャを作ったんですよ。テクスチャって苦手なので結構時間かかっちゃいましたが^^;

旧バージョンのアニメーションベンダーも、ボタンを取ると一応1プリムに対応するようにしてたんですが、今回のバージョンから完全な1プリムアニメーションベンダーとして販売です。1プリムだとバージョン1.21よりも古いビューワーはllDetectedTouch系の関数が動かないので、一応ダイアログメニューで操作できるようにするんですが、このバージョンではポーズしてるときはShift+Shift+キーでも操作できるようにしました。

あと、ベンダーに座ってポーズするときにカメラの位置が正面に来るようにしました。ポーズの位置は、前のバージョンは上下に90~200cmの範囲で調整できるようになってたんですが、90cmだと身長高めのアバターは足が埋まるし、160cm以上は上に上がりすぎって感じなので、100~150cmに減らしてますw

旧バージョンは見た目もイマイチだなって思ってたので、あまり高い値段はつけられなかったんですね^^;; でも今回のバージョンアップで前よりちょっといい感じになったかなって思うので、この機会に価格も値上げしてL$120に変更しました。

アップデートは無料なので、旧バージョンをお買い上げのお客様でご希望の方は、お手数ですがご連絡くださいね。宜しくお願いします^^

11月7日追記: アップデート希望の連絡が全然来なくて悲しいので、購入者様全員にアップデート品を発送させて頂きました。ただ装置を使って自動で送ったのでBusyにしている方などは受け取れません^^; それから配送エラーになったので検索してみたら見つからない方(UUID不明)が2~3人いました。。。これってアバターを削除してやめちゃったんでしょうかね?

11月19日追記: Mansion Mall店に展示してきました。宜しくお願いします^^

2009年11月1日日曜日

眼鏡が不良品になってました><

うちはシンプルな形の眼鏡を2種類だけ販売してるんですが、Glasses type1(丸いレンズのほう)をお買い上げ頂いたお客様から動作不良のご報告がありまして、なぜか右側のつるの部分がカラーチェンジとか反映されなくなってました。。。それでよく調べてみたら、その部分のスクリプトが動作中のチェックが外れて止まってしまってたんですよ@@;

前のバージョン(V1.0.2)は動作に問題なかったので、たぶんMONOでコンパイルし直したときに、手違いか何かの拍子でチェックが外れちゃったんじゃないかなって思います^^;

問題のバージョンはV1.0.2aです。丸いレンズのほうは滅多に売れなかったと思うんですが、問題のバージョンを購入されたお客様おられましたら、現品を確認させてもらって修正版V1.0.2bをお渡しいたしますので、お手数ですがご連絡ください。宜しくお願いします。m(_ _)m