2009年12月29日火曜日

オートアップデートのスクリプト

うちの製品のアップデートはラッキーレターだけ実験的にタッチでアップデート品が届くシステムを店舗に置いてるんですね。このシステムはお客様データベース(バージョンアップの度に私がお名前を手動で入力してるんですがw)にアクセスしてアバター名が登録されてたらサーバーから商品配送するようになってるんですよ。でも、まあ入力が面倒で、時々ミスで抜けてたりすることもあるし、お客様には来店してもらう必要があるので、自動アップデートに切り替えようかなって思ってます^^;

普通に利用されてるアップデートシステムはRezのときメールでチェックするようなのが多いと思います。llEmailのページに出てるサンプルみたいなスクリプトですね。
ただ、サーバーをテイクしたり手違いとかで持ち物に返却になってしまうと、サーバーのUUIDキーが無効になって既にお客様の手に渡った製品からは二度と利用できなくなるので、私は採用しようって気になりませんでしたが^^;

でも今回は同じようにメールを使ったシステムで、製品バージョンが1.5.4みたいなフォーマットに対応したものを何となく書いてテストしたので載せますね。

アップデートサーバーです。設置して運用開始したら絶対にテイクしないでくださいw
// アップデートサーバー
list product=[ // "製品名","version",
"Drink vendor","1.10",
"Skybox","1.0.2",
"Open car","1.0.15",
NULL_KEY];

default
{
    state_entry()
    {  // 10秒毎のタイマー
        llSetTimerEvent(10);
    }

    timer()
    {  // メールチェック
        llGetNextEmail("","");
    }

    touch_start(integer total_number)
    {
        if (llDetectedKey(0) == llGetOwner()) {  // オーナーがタッチしたら
            integer i;
            integer j=llGetListLength(product)-1;
            string item;
            // コンテンツ内チェック
            for (i=0; i < j; i+=2) {
                item=llList2String(product,i);
                if (llGetInventoryType(item) == INVENTORY_NONE) llOwnerSay(item+" - not found.");
            }
            // サーバーのキー
            llOwnerSay("Server key: "+(string)llGetKey());
        }
    }

    email(string time, string address, string subject, string message, integer num_left)
    {
        list l=llParseString2List(subject,[",","."],[]);  // subjectを分割してリストに格納
        key id=llList2Key(l,0);  // お客様のキー
        string item=llList2String(l,1);  // 製品名
        integer i=llListFindList(product,[item]);  // 製品リストチェック
        if (~i) {  // リストにあったらバージョンチェック
            list ver=llParseString2List(llList2String(product,i+1),["."],[]);
            integer j=llGetListLength(ver);
            for (i=0; i < j; i++) if (llList2Integer(ver,i) > llList2Integer(l,i+2)) i=j+1;
            if (i > j) {  // 新バージョンが出てたら
                if (llGetInventoryType(item) != INVENTORY_NONE) {
                    llInstantMessage(id,"New version "+item+" available.");  // おニューがあるです!
                    llGiveInventory(id,item);  // 送付
                }
            }
        }
        if (num_left) llGetNextEmail("","");  // 次のメールチェック
    }
}

タッチするとコンテンツ内のチェック(リストの製品が入ってないとき表示)とサーバーのキーを表示します。サーバーキーはクライアントスクリプトに記入して製品に組み込んでください。
そして、製品がバージョンアップしたときは、コンテンツの製品を新しいものに入れ替えて、リストの製品のバージョンを変更してからタッチで一応チェックします。

レンタルやプライベートアイランドだと地主の都合でいつ無くなるかも知れないので、メインランドの自分名義の土地に置くのが一番いいでしょうね。

クライアントです。
// アップデートクライアント
key server="サーバーUUIDキー";  // アップデートサーバーのキーを記入
string name="Drink vendor";  // 製品名
string ver="1.10";  // バージョン

default
{
    on_rez(integer start_param)
    {  // 持ち物から出したら
        string addr=(string)server+"@lsl.secondlife.com";  // サーバーのメールアドレス
        llEmail(addr,(string)llGetOwner()+","+name+","+ver,"");  // メール送信
    }
}

クライアントスクリプトはアップデート対象製品(もちろんコピー可、譲渡不可)に組み込みますが、llEmailは20秒もスクリプトが止まるので、他のスクリプトがある場合はマージせずに別のスクリプトにして入れたほうががいいですね。スクリプトのパーミッションは修正不可、コピー可、譲渡不可にしてください。

2009年12月24日木曜日

オンラインインジケータの隠し機能

クリスマスですね♪ でも何か足りないって思ったら、今年はポインセチアを買ってなかったってことに気付いた千尋ですw

この前、Online indicatorをご購入頂いた海外のお客様から、友達のオンラインステータスを表示させられないか?っていうお問い合わせがあったんですね。

うちのオンラインインジケータボードは激安なので色々設定とかできるようには作ってないんですが、実は付属のスクリプトをちょっと書き換えたら、そういう使い方もできるようにしてたので今回はすぐに対応できました。

以下、一応方法を書いときますね。対応してるのはV1.0.5以上になります。

コンテンツ内に入ってるFloating textっていうスクリプトの22行目ぐらい
llMessageLinked(LINK_THIS,0,"refresh","");
この行を
llMessageLinked(LINK_THIS,0,"uuid","アバターのキー");
に書き換えて保存します。(対象のアバターキーはSecond Life Searchとかで調べてください)

ただ、本人に無断でオンライン状態を監視するような使い方は、ストーカー行為のように受け取られるかも知れないと思うので注意してくださいね^^;

あと、V1.1.0以上は下記の行を加えるとタッチでの呼び出しを無効にできます。
llMessageLinked(LINK_THIS,FALSE,"call","");


オンラインインジケータは、Rezすると自動でプロフ写真を取得して表示するオンラインボードです。オンラインになってるときはタッチでオーナーを呼び出しできます。お値段はコピー可能版がL$20 L$30、譲渡可能版がL$15です。いかがでしょうか^^

2010年5月15日追記: コピー可能版はL$30に値上げしました。

2011年3月26日追記: いつの間にかhttp://search.secondlife.com/はアバターのキーが調べられないよう変更されてますね。。。;

2009年12月21日月曜日

ラッキーレターを2プリム化

1プリム化したラッキーレター(Lucky letter one)は自作スキンを貼って使えないので、従来の3プリム版を廃止せずに2種類セットにして販売してるんですが、やっぱりプリム数の少ない1プリム版のほうでオリジナルスキンを使えないかっていうお問い合わせがあったりするんですね。

それで1プリム版ではちょっと無理なので、僅かでもプリム削減しようってことで、3プリムだったラッキーレターを2プリムに改良しました^^

レター表示部のテクスチャは3プリムのより文字サイズがいくらか小さいので、近くで見ると縁があまり鮮明じゃないんですけどね^^;

それから両機種とも、この前ランドマークやノートを添付できるようにバージョンアップしてたんですが、稼動中にコンテンツを出し入れしたとき、次のレターに変わるまでタイマーが速く進んじゃうのを直しました^^;
Lucky letter V1.6.0
Lucky letter one V1.0.4

Lucky letterアップデートサービスはMansion Mall店などに置いてますのでご利用くださいね^^

12月30日追記: 稼動中パーティクルを切り替えたときレターの表示がおかしくなるのを直しました。2プリム化した際のミスです^^; 修正版は1.6.1になります。

2009年12月20日日曜日

First Step SIM 22日オープン

First StepっていうSIMが明後日22日にオープンするんですが、オーナーのVasyuさんのご好意で、SIM内のFSショッピングモールに出店させて頂きました^^


モールはこんな感じの建物です。各階には魔方陣があって、そこのクリスタルから各階テレポートで移動できるようになってます。何となくファンタジーなRPGって感じのする作りでしたw


うちは広めのスペースを貸してもらえたんですが、そこをいっぱいにできるだけの商品作ってないんですよね。。。なので、今後もっと商品点数を増やせられるよう頑張っていきたいなって思います^^;
http://slurl.com/secondlife/First%20Step/124/83/91


入り口っていうか冒険を始めるスタート地点(?)でしょうか、そこは海底になってて、何かすごく幻想的で綺麗な場所でした^^
さて、千尋はこれから闇に包まれた世界に光を取り戻すための旅に出ます(違
http://slurl.com/secondlife/First%20Step/128/128/1

12月22日オープン当日のスケジュールは次のようになってます。
20:00~ SIMオープン
21:20~ PPP花火商会様による花火ショー
22:00~ Step Up! & B-BOY団様によるライブステージ

http://firststep.slmame.com/e795905.html

あと、私はまだこちらは見に行ってないんですが、SIM上空にサーキットコースがあって12月25~27日にレースが開催されるそうです^^
http://firststep.slmame.com/e797875.html

皆様、是非お越しくださいね^^

2009年12月19日土曜日

ミッドナイトマニア試作

最近売れ行きの減少で経営がちょっときびしくなってきたので、これからはSLで流行ってそうなスクリプト製品を次々とパクっていこうかなって企んでる千尋ですwww

改良したい商品がまだいっぱいあるので、先々月くらいからあまり製作が進んでないんですが、写真は試作中のミッドナイトマニアもどきです。先日フローティングテキスト表示の四角いボックスだったのをボード状にしました。

タッチで登録、規定人数になったらロック、そして0時になったらアイテムを送付っていう基本的な動作はできてますが、設定とか細かい部分はまだまだです^^;
とりあえず数字はXyzzyTextの10 Characterで表示させてますが、1/のとき文字の間に細い縦線が見えるので、これはちょっと使えなさそうって感じですね。。。まあこの部分も自作するつもりなので一時的に使ってるんですが。でも、もし1プリムで作るんだったら0~999人までの表示部のテクスチャを作らないといけないんですよね。。。んー、めまいがしてきたので来年の課題にしときますw

2009年12月18日金曜日

店内に草植えられてる><

たぶんビューワーのキャッシュが壊れてて、SL-Shopping.net-Mallの地面がサイケデリックって感じに見えてる千尋ですwww

何日か前に気がついたんですがSL-Shopping.net-Mall店の店内に草が生えてるんですよ。お隣のSOS-Nebulaさんのお店も結構草ボーボーになってます。(地面がおかしなまま撮った写真ですが^^;)

モールの裏の方の草だと思うんですけど、気付いてないのかずっと直らないし、SL-Shopping.net-MallオーナーのGSさんは最近あまりログインしてないみたいで相談しにくいので、今日は仕方なくその土地の持ち主に連絡入れてみました^^;

12月19日追記: 今日、モールの裏の方からお返事頂きまして、草を除けてくださったようですが、まだ少し店内に見えるのでもう一言IMしておきました。草はしばらく見てると消えたり現れたりするので臨時プリムでできてるんじゃないかなって思います。

2009年12月16日水曜日

ミニマップに蠢く怪しい影

この前よく利用させてもらってたSIM全体サンドボックスだったSIMが突然無くなったんですよ。そこはたぶん外国の企業が運営してたと思うんですが、SLに参入してる企業のSIMが減ったりするとやっぱり景気の悪さを感じますね;;

昨夜はあるサンドボックス上空で作業してて眠くなってそのまま落ちましたw それで今日ログインして、何となくミニマップを表示してみたら、何かマップに映ってる影がぐるぐる回ってたんですよ@@;


ここはSIMの1/4くらいの面積のサンドボックスなんですが、ミニマップでこのサイズだとサンドボックスと同じくらい大きいオブジェクトが回転してるんじゃないかなって思って地上に降りてみたんですね。

そしたら予想通り、地上には大きな回転するオブジェクトが複数放置してありました。。。んー、何か人少ないって思ったら迷惑なオブジェクトが置き去りにされてたんですね(;-_-)

あとブログの話になりますが、BloggerはGIFアニメが静止画に変換されるみたいでアップできませんでした。なので仕方なくJavaScriptでアニメーションさせてます。BloggerはSLで使用されてる方が多いと思ったので迷わず移転してきたんですが、普通のブログサービスと違って不便なところも結構ありますね。。。ホント利用者が多ければ必ずしも良いものだとは限らないことを実感しました orz

2009年12月15日火曜日

プライズキャンプ V1.1.8

プライズキャンプ(アイテムキャンプ)4機種に、ランドマークやノートをコンテンツ内に入れておくと賞品と一緒に渡す機能を付けてみました。

それで改良してたら、プライズキャンピングビーチチェアにちょっと不具合が。。。この機種はアイテム表示パネルの裏面にもテクスチャが表示されるようにしてあったんですが、V1.1.7は前回のスクリプト修正にミスがあって裏面の表示が動かなくなってたんですよ orz
該当バージョンをご購入頂いたお客様にはV1.1.8をお送りしましたが、他のバージョン、他の機種でもアップデートご希望ありましたら対応いたします。宜しくお願いします^^


Prize camping chair L$70
Prize camping cross L$80
Prize camping dance pad L$60
Prize camping beach chair L$100

最近はラキボやミッドナイトマニアとかが人気で、アイテムキャンプはちょっと活気ないですけど、この4機種の中ではプライズキャンピングチェアが一番人気あるみたいで、Xstreet SLでは高評価を頂いてます^^ 国内の売れ行きはイマイチだったので登録するとき全然期待してなかったんですがw

12月17日追記: ラッキーレターにもランドマークやノートを添付する機能を追加しました^^

テーブルの色を淡いピンクに変えました

最近売り上げの低下が気になる千尋です。うちで売れ筋だったユーチューブTVは、利用させてもらってる変換サーバーが重い問題もありますが、たぶんフリーのユーチューブテレビとかに圧倒されて最近ほとんど売れてないですし、ラッキーレターは1プリム化が遅れたためにうちのボードを使ってくださってた一部のお客様に浮気されちゃったのが痛いですね;;

なので、何か売れそうな新製品を作りたいところなんですが、販売中の商品の修正や改良したい部分が色々あるので取り掛かれなかったりします><

今日はテーブルをちょっと直しました。。。色(スカルプなのでテクスチャですけど)をメニューで4色変更可能なテーブルを3種類販売してるんですが、ピンク色だけ色が濃すぎって感じだったので、もっと淡いピンク色に変えたんですよ。

元はこんな色でしたw
http://backup-beta.blogspot.com/2009/03/blog-post_03.html

形はハート、オクタゴン(八角形)、スクエアの3種類で、お値段は各25L$です。いかがでしょうか^^

2009年12月14日月曜日

フライパン(ラッキーレター景品)

久しぶりにプライズ用アイテムを作って、ベルローズ店のラッキーレターを入れ替えてきました^^

このフライパンは左手に装着してタッチするとフライパンをギターみたいに持って弾きますw 自作のアニメーションに加え、4秒おきのランダムで明るい感じの表情いくつかを一緒に再生するんですが、まあ音は入ってないし、アニメーションはショボイですけどね^^;
一応、装着位置を左手以外にしたときはアニメーションは再生しないようにしてあるので、他の方のギター用HUDと合わせてみても何とか遊べるみたいですw

実はこのフライパンのスカルプは、去年の今頃製作してたものなんですよ。それで最初はタッチとかで何か食べ物が出るようにしたかったんですが、私にはおいしそうなものが上手く作れそうになかったので、その後ギター弾く真似をするネタにしたんですね。でもアニメが全然上手くいかなくて、またずっと放置になってました^^;

このフライパンはBELLE ROSEさんのラッキーレター限定で、10分間隔にしてます^^

それからベルローズ店では、クリスマスセールってことで今月25日までの期間、ラッキーレターフィードリーダーを20%OFFにしました。宜しくお願いします^^

12月26日追記: 20%OFFセール終了しました。ありがとうございました^^

2009年12月11日金曜日

ブログカフェ

PINK CLOVER RESORTを運営されてるIchiさんって方が、ブログカフェっていうのを始められてて、私も縁あってブログのパネルを置かせてもらってます^^

各パネルにタッチするとブラウザでブログを開くようになってるんですね。それで色々な方のブログを見ながらアイテムキャンプしたり、ラッキーボード待ったりって感じの場になってます。


カフェの隣にはクリスマス向のフリーマーケットも開催されてました。このフリマではプレゼント(譲渡)可能な商品やクリスマスの飾りなどを売ってるようです。


クリスマスですね。大きなケーキも飾られてます。んー、こういうの見たら何か無性にケーキ食べたくなってきたのでちょっと買い物に。。。あ、いや、今日はもう遅いと思うのでやっぱりやめときますw
http://slurl.com/secondlife/PINK%20CLOVER%20RESORT/126/165/21

ブログカフェのパネルはまだまだ空きがありました。これはグループ加入不要で設置してもらえるのでグループの空きに余裕がない方でも安心です。ブロガーの皆様いかがでしょうか?^^
http://pincloresort.blogspot.com/2009/12/blog-cafe.html

2009年12月8日火曜日

譲渡権限をチェックするスクリプト

llGiveInventoryでアイテムを渡したとき、アバターがそのアイテムを受け取るまでに配布に使った装置を削除しても、きちんと受け取れるってことに最近気付いてびっくりした千尋です。。。今まで削除してしまうと受け取れないものだと思い込んでましたので^^;

今回は権限(パーミッション)をチェックするスクリプトのサンプルです。権限のチェックはllGetInventoryPermMaskを使います。

サンプルでは、オーナーがアイテムの譲渡権限(トランスファー)を持ってるかを簡単にチェックしてます。。。まあ自作のアイテムしか扱う機会がない人は無用かなって思いますけどw
比べやすいようにオブジェクトのコンテンツを全部渡すスクリプトをベースにしてみました。今回注釈とかあまり入れてませんので、そちらのスクリプトも参考にしてくださいね^^

// 譲渡権限チェックのサンプル
// タッチでコンテンツ内のアイテムを全部渡す
list item;

listup()
{ // アイテムのリストアップ
    item=[];
    integer i;
    integer j=llGetInventoryNumber(INVENTORY_ALL);
    string str;
    for (i=0; i < j; i++) {
        str=llGetInventoryName(INVENTORY_ALL,i);
        if (str != llGetScriptName()) {  // このスクリプト以外
            if (!(llGetInventoryPermMask(str,MASK_OWNER) & PERM_TRANSFER)) {  // オーナーが譲渡できないアイテム
                llOwnerSay(str+" の譲渡権限がありません><");
            }
            else {  // それ以外はリストアップ
                item+=[str];
            }
        }
    }
}

default
{
    state_entry()
    {
        listup();
    }

    changed(integer change)
    {
        if (change & CHANGED_INVENTORY) { // コンテンツ内が変化したとき
            listup();
        }
    }

    touch_start(integer total_number)
    {  // タッチイベント
        key id=llDetectedKey(0);
        if (item) {
            string folder=llGetObjectName();
            if (id) llGiveInventoryList(id,folder,item);  // フォルダで渡す
        }
        else {  // 渡すアイテムが無いとき
            llWhisper(0,"準備中です^^;");  // 準備中ってことでごまかすw
        }
    }
}

2009年12月6日日曜日

Feed readerスピードアップ^^;

先月はPipesの仕様変更で直したフィードリーダーなんですが、今回のバージョン1.0.6でPipesとのデータ通信に30秒程度時間かかってて遅かった部分を直しました。それで大体5~10秒以内くらいでデータ取得できるようになったと思います^^

今回の改善は大変大掛かりな修正をですね。。。あ、いえ嘘です。ホントはLSL HTTP server(HTTP-IN)でレスポンス返す処理を書き忘れてたので、Pipesがタイムアウトするまでの時間が余分に掛かってたんですよ。。。す、スミマセン><

んー、それにしても今までこんな単純なミスに気がつかなかったなんてホント千尋はとろいやつですね^^;;;;;;
この商品はコピー不可・譲渡可なんですが、何かスッキリしないので今回は購入者様に修正版をお送りすることにしました。。。たぶん今夜中に発送しますので宜しくお願いします。(今回はきっちり受け取れるよう発送装置を使わずに手動で送りますね)

それで気になってた部分が直せたので価格をL$100に値上げしました。Pipes作成にもかなり時間費やしてますので、もっと値上げしてもいいんですが。。。またいつか値上げするかも?^^;

3時40分頃追記: 発送作業終了しました。今回は装置を使わずに送ったので、もし受け取りダイアログが出なかったときはゴミ箱のほうに入ってると思いますのでチェックしてくださいね。

2009年12月3日木曜日

LM giverのフローティングテキスト

フローティングテキストって、店舗レンタルしたときとか隣の店舗から壁越しに見えたりしたら迷惑なので気をつけないといけないですね。うちも前、お隣さんのフォローティングテキストがたくさんうちの店内に写り込んでてあまりにも酷かったので、連絡取って直してもらったことがあったんですよw

なので、ベンダーみたいにフローティング表示がないとちょっとわかりにくいもの以外はなるべく付けようと思わなかったんですが、ランドマークギバーは結構付けて使ってる例が多いような気がするので、うちの製品も一応表示できるようにしてみました。

対象機種はフリーのLM giver以外のランドマーク配布装置で、LM giverセカンドエディションとハートピンLM giverリップスティックLM giverです。
バージョンは3機種ともV2.0.5になります。それから発売当時より段階的にちょっとずつ値上げしてまして、現在LM giverセカンドエディションとハートピンLM giverがL$30、リップスティックLM giverがL$40になってます^^;

表示テキストはノートで設定可能なようにしました。。。まあ旧バージョンは以下のような簡単なスクリプトを書いてコンテンツに入れるだけで同様の表示ができますが^^;
// フローティングテキスト表示
default
{
    state_entry()
    {
        llSetText("Touch to get landmark!!",<1,1,1>,1.0);
    }
}

アップデートご希望のお客様はご連絡くださいね。宜しくお願いします^^

2009年12月2日水曜日

ベンダー全機種ちょっと改良

発売中のベンダー全機種のインベントリー周りの処理をちょっと変更しました。アイテムリストに書いたオブジェクト(商品名)がコンテンツ内に無いときエラーメッセージを出しますが、まとめて商品を入れ替えたりするときとかダラダラ表示されてうざいので、まとめてドロップしたときは一度にまとめて表示するようにして、問題のないときはOKってメッセージ出すようにしました。

それからアニメーションベンダーと同じなんですが、フリー配布のベンダー(シングルパネル、3プリム)以外は、ランドマークやノートを入れておくと購入したオブジェクトと一緒にフォルダで渡すようにしました。

あと、1プリム9アイテム1プリム16アイテム以外の機種はアイテムリストのメモリ残量を表示するようにしました。

各機種のバージョンは現在次の通りです。
Animation vendor V2.1.1
Vendor V1.4.1 (フリー)
1prim vendor V2.2.1
1prim 9items vendor V1.4.1
1prim 16items vendor V1.1.1 (メタコマース限定販売)
4panels vendor V1.3.1
5panels vendor V1.3.1
7panels vendor V1.3.1
9panels vendor V1.3.1

アップデートご希望のお客様はお手数ですけどご連絡くださいね。宜しくお願いします^^

12月4日追記: コンテンツに入れたLMやノートをリネームした場合きちんと認識されて
なかったので直しました^^;