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やノートをリネームした場合きちんと認識されて
なかったので直しました^^;

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

2009年10月31日土曜日

スライドショーのスクリプト

今回はコンテンツに入ってるテクスチャを順に表示する、スライドショーって感じのスクリプトです^^

タイマーで一定時間毎にテクスチャを張り替えたらいいんですが、ただ順に表示するだけだったら簡単すぎるのでフェードイン、フェードアウトするようにしてみました。まあ、ありがちですけどね^^;

// スライドショー
float time=10;  // 表示時間(秒)
float val=0;  // 加減値用
integer int=0;  // カウンタ
integer dir=1;  // 符号設定用

default
{
    state_entry()
    {
        llSetTimerEvent(0.1);  // タイマー始動
    }

    timer()
    {
        llSetTimerEvent(0.1);  // タイマー0.1秒
        if (val > 1) {  // valが1を超えたら
            dir=-1;  // 符号をマイナス
            llSetTimerEvent(time);  // タイマーを調整して一定時間表示させる
        }
        else if (val < 0) {  // valがマイナスになったら
            dir=1;  // 符号をプラス
            integer i=llGetInventoryNumber(INVENTORY_TEXTURE);  // コンテンツ内のテクスチャ数
            int++;  // カウンタを進める
            if (int >= i) int=0;  // カウンタがテクスチャ数を超えたら0にする
            string texture=llGetInventoryName(INVENTORY_TEXTURE,int);  // カウンタからテクスチャ名取得
            if (texture) llSetTexture(texture,0);  // 面番号0にテクスチャ表示
        }
        val+=0.05*dir;  // 加減する値を計算
        llSetColor(<val,val,val>,0);  // 面番号0の色を設定
    }
}

フェードイン、フェードアウトは色を白から黒く変化させています。色設定の代わりにllScaleTextureを使うとズームイン、ズームアウトする感じにできますが、この関数は0.2秒遅滞があるので、あまりスムーズにならないですね。

2009年10月28日水曜日

YouTubeが少し変わってた

LSL CONは2,3回に分けて、ざっとですが見てきたんですが、Ys@MALLのトレハンは気がついたら終わってて行きそびれた千尋です^^;

YouTube TV screenなんですが、お客様から映らない動画があるってご連絡もらったので、TVをいろいろテストしたんですね。その時、うちで用意してた変換サーバーを使ってみたら、どの動画も全然映らなくなってました><

それでYouTubeの動画ページを調べてみたら、JavaScriptの変数名とかが変更されてたんですよ。。。ううぅ、いつの間に仕様が変わってたんでしょうか。とにかくPHPスクリプトを修正して映るようになりました^^;

2009年10月27日火曜日

ワゴン借りてお小遣いもらいましたw

昨日、Zindraで見つけた小さなモールでワゴン借りたんですが、借りようと思ったワゴンの上にパイが4個置いてあったんですね。それでオーナーの方に、「このワゴン借りれますか?」って問い合わせてみたら、「借りれます。パイはタッチで姿を消します」ってお返事がありました。

それで、ハロウィンなので何か仕掛けがあるのかな。。。爆発してもびっくりしないようにしようwって思ってタッチしたら、その瞬間パイが消えて5L$もらいました@@;

あー、これはお金を拾われるスクリプトみたいになってたんですね。でも、私がもらっちゃっていいんでしょうか。キャンプのような感じで置いてたんじゃあ。。。全部食べていいですか?って聞いたら、「どうぞ、私のおごりです」って言われたので4個とも頂いちゃいましたw(あ、パイが乗ってるワゴン撮影してたら良かったんですが。。。^^;)

金額は4個ともバラバラに設定されてて(ランダムかも?)合計14L$になりました。別にお金に困ってたわけじゃないんですが、何か微笑ましい仕掛けだなって思ってちょっと嬉しい気分になりました^^

2009年10月23日金曜日

テレポート元を記録するスクリプト

テレポート履歴を記録するスクリプトみたいなテレポート先じゃなくて、テレポートしたらビューワーの機能でチャット履歴に
Teleport completed from http://slurl.com/secondlife/Artsebarsky/236/185/23
みたいに表示されるリンクありますよね。そのテレポート元アドレスを履歴として記録できる機能を持ったHUDか何かが、前どこかで売られてるのを見たことがあったと思うんですよ。

その時は、そういうのもあるんだって思ったんですけど、今回はそのテレポート元を記録するスクリプトを考えてみました^^

一定時間毎に現在位置をチェックするようにして、テレポートした直後にタイマーを止めてテレポート前の位置データを記録させます。ただ、これだけだとタイミングによってテレポート直後の位置データが記録されちゃうことがあるので、一時リストに何件か保存しておいて、テレポート直後のデータと比較して違ってたら履歴リストに記録するようにしました。

// テレポート元を記録
list tp;  // テレポート元履歴用リスト
integer max=20;  // 最大記録数
list tmp;  // 現在位置一時記録用リスト
float time=1;  // チェックする間隔

string get_pos()
{
    vector v=llGetPos();  // 現在位置取得
    // リージョン名を取得して現在位置をRegion/x/y/zにする
    return llEscapeURL(llGetRegionName())+"/"+(string)((integer)v.x)+"/"+(string)((integer)v.y)+"/"+(string)((integer)v.z);
}

default
{
    state_entry()
    {
        llSetTimerEvent(time);  // タイマーをセット
    }

    timer()
    {
        tmp+=[get_pos()];  // 現在の位置データを一時的に記録
        if (llGetListLength(tmp) > 10) tmp=llList2List(tmp,-10,-1);  // tmpの記録数を10件に調整
    }

    changed(integer change)
    {
        if (change & CHANGED_TELEPORT)
        {  // テレポートしたとき
            llSetTimerEvent(0);  // タイマー停止
            string here=get_pos();  // 現在の位置データ取得
            string str=here;
            integer i;
            integer j=llGetListLength(tmp);
            for (i=0; here == str && i < j; i++)
            {  // 現在の位置データと比較して一時記録リストからテレポート直前の位置データを取得
                str=llList2String(tmp,i);
            }
            i=llGetListLength(tp);  // 履歴リストの長さ
            if (i >= max) tp=llList2List(tp,-max,-1);  // 履歴リストの長さを調整
            tp+=[str];  // テレポート元を履歴リストに加える
            llSetTimerEvent(time);  // タイマー開始
        }
    }

    touch_start(integer total_number)
    {
        if (llDetectedKey(0) == llGetOwner())
        {  // オーナーがタッチするとSLURLにして履歴リストを表示
            integer i;
            integer j=llGetListLength(tp);
            llOwnerSay("** TP from location history **");
            for (i=0; i < j; i++) llOwnerSay("http://slurl.com/secondlife/"+llList2String(tp,i));
        }
    }
}


2010年4月2日追記: ビューワー2.0.0からスペースの入ったSIM名のリンクがおかしくなるのでURLエンコード追加しました。

2009年10月22日木曜日

うちの支店に他所様製のラキボが

この前、新しくなったラッキーレターの広告を何ヶ所かで出したんですが、クリックの多かったところと広告費が格安だったところを継続しようと思って、昨夜、追加で支払いに回ってたんですね。
それでFukuoka SIMにあるモールの近くで借りたADボードに支払ったあと、次の場所に移動しようと思ってたら、そちらを経営されてるMiabiさんに話しかけられまして、広告出したお礼を言われました^^

そして、ラッキーレター作られてるんですか?って聞かれて、新機種が出たので広告出してみたんですって感じで少しお話してたら、Fukuoka Honey's Mallに支店出してみませんか?っていう話になりました。

そのモールは、月額1L$のレンタル代と売上の30%を徴収するようになってるんですね。(モールの看板にはポイント制がどうとかややこしそうなことも書いてありましたが、そのシステムはまだだそうです)
それで、こういう形態のところは出店したことがなかったので、試しに出店してみることにしました。

契約してグループ加入と「出店セット」を頂いた後、その日は準備せずに帰ったんですが、今日準備に行こうと思って、出店セットを確認したらShop NNさん製のラッキーボードが入ってました。。。あー、そういえば借りるときラッキーボードも設置してくださいって言われてました。もちろん、うちのラッキーレターを設置したらいいと思ってたんですけど;;

元々ラッキーレター(SHOP CHIHIROのラキボ)の広告のために来たはずなのに、他所様製の競合製品をうちの支店に設置するなんて、何かアホみたいじゃないですかね。。。んー、でも、まあいいか orz

賞品は天板のガラス面に浮世絵を写したような感じのテーブルです。テクスチャは去年景品に使った浮世絵パネルの使いまわしなんですけどね^^; あとパッケージに書き忘れてますが3プリムです。

店舗はこんな感じです。よろしくお願いします^^
http://slurl.com/secondlife/Fukuoka/100/38/24

11月28日追記: Fukuoka Honey's Mallですが改装されるそうなので、本日商品を撤去しました。

Ys@MALL トレハン 秋の収穫祭 2009

トレハン用のアイテムがなかなか思いつかなくて、開始日の午後過ぎてやっとアイテムが完成してホッとした千尋です^^;;

今夜からYs@MALLのトレハンが始まりました^^
トレハン まもなくスタート!Ys@MALL(Ys@MALL / もっさい商店街w)

Yaskeyさんの経営されてるショッピングモール、商店街が対象区域です。いっぱいありますが、確かGreece以外はSIMが違っても場所的に隣同士とかでスグ近くだったと思います。。。私は方向音痴なので、もっさい商店街の辺りでよく迷っちゃうんですが^^;
Ys@MALL Wyrlsong
Ys@MALL Symmetry & mossai(もっさい商店街)
Ys@MALL SATSUKI(颯月)
Ys@MALL Romantic Street(ロマンチック街道)
Ys@MALL Greece

参加店とアイテム一覧です。
http://www.yaskey.cside.tv/japanvillage/Ys@MALL/torehun2009.php

うちはStanding signboard(立て看板)をトレハンのアイテムとして作りしました。。。あ、でもお店とかされてない方にはイラネって言われちゃいそうですね(すみません><

スタンドっていうかフレームの部分がスカルプで、サインボード部分と合わせて全部で2プリムです。テクスチャを1枚コンテンツに入れると表示します。それからランドマークやノート、オブジェクトなどをコンテンツに入れるとタッチしたアバターに渡せるようになってるんですよ。あと、グループ限定もできるようにしたので、何となくグループギフト配布とかにも使えそうな気がしますw

宝箱は小さな栗の形です。うちはワゴンなので見つけるのめっちゃ簡単だと思いますけどw
SATSUKIのワゴンに隠しに行ったときにラッキーレターアップデートクライアントも置いてきたんですよ。なので過去ラッキーレターをお買い上げ頂いた方は、ついでにラッキーレターoneもゲットしていってくださいね^^

ラッキーレターoneは1プリムの新型ラッキーレターです。ソラマメとか見てたら数人のお客様がブログで紹介してくださってました。どうもありがとうございます!!><

3時10分頃追記: 期間は2009年10月21日(水)22時~10月27日(火)22時(日本時間)です。期間中は花火大会やマーメイドショーも企画されてるので皆様是非お越しくださいね^^

2009年10月16日金曜日

Lucky letter oneのスキン?

この前お問い合わせがあったんですが、ラッキーレターone(1プリム版)は自作のボード用スキンを貼って使用することができません。。。なぜかっていうと、1プリム化したことでレターや時間毎に同じ背景で一覧表みたい敷き詰めて作ってるからテクスチャ製作が大変なのと、稼動中にスクリプトで直接テクスチャのUUID指定してる部分があるのでスクリプトの書き換えも必要なんです^^;

はい、勘のいい方はもうわかったかなって思いますけど、従来の3プリム版ラッキーレターを廃止しなかった最大の理由はやっぱりこのスキンですね。3プリム版はグループ限定オン・オフを切り替えたり、スクリプトをリセットしたらスキンが元に戻りますが、その点に気をつければ一応自作したスキンを背景部分に貼り付けて使用することができます^^
http://backup-beta.blogspot.com/2009/02/blog-post_5967.html

ってことで、ラッキーレターoneには自作スキン使えないんですけど、隠しモードみたいな感じで、3プリム版ラッキーレターに似たブラックレターモードがあったりします。オレンジ色には黒い文字のほうが、やっぱり遠くから見たとき視認性がいいかなって思うのでこっそり実装してたんですよw

文字の大きさがちょっと違ってる部分あるけど、真ん中のレターが影付きになってる以外はそっくりだと思いますw 黒文字にする方法はBlack letterっていう名前でノートを作って(中は空でOK)それをコンテンツに入れると切り替わります。。。でもホントは数種類スキンを作ってメニューで切り替えられるようにしようかなって思ってたんですけど、そこまでする根気がなかったんですね^^;;

10月18日追記: ちなみにオレンジの背景はハロウィンのカボチャを意識して作ってるとかじゃありませんwww ラッキーレター発売開始は去年の6月頃ですし。。。ラッキーって感じの色は、私は金色とか黄色辺りの色をイメージしたのでオレンジ色のグラデーションに決めたんですよ。

12月21日追記: この隠しモードはV1.0.2からスキンチェンジメニューで切り替えできるようになったので後のバージョンでは廃止になりました。

2009年10月14日水曜日

ブレンダー+Primstar

Domino Designs LimitedさんのBlender Sculptie Import & Export ScriptsがPrimstarっていうスクリプトに変わってたので、ついでにブレンダーも新しいバージョン2.49bをダウンロードして一緒にインストールしてみたんですね。

それで、Blender Sculptie Import & Export Scriptsで作ってたデータを開いてUVマップを出そうとしてみたんですけど出せないみたいなんですよ;; データフォーマットが変わって互換なくなっちゃったんでしょうか?>< 今までに作ったスカルプのデータが使えないんだったら困りますよね。何か操作間違えてるのかもって気もするんですがよくわかりません。

アンインストールして古いの入れ直そうかなって思って、もう一回見に行ってよく見たら、私がダウンロードしたバージョンはPrimstar 0.9.14-gitで開発中のテスト版みたいでした。。。うわっ、そーいえば私、何も考えずに全バージョンが置いてあるページから最新バージョンをゲットしちゃいましたよw

安定版の0.5.0をダウンロードしてインストールし直しました。。。んー、何か今日もしょーもない失敗で時間潰してしまった千尋です^^;;

2009年10月12日月曜日

ちょっとずうずうしいですよw

昨夜サンドボックス上空3000mくらいに置いたスカイボックスの中でログアウトしてたんですが、ログインしたら私の白いスカイボックスの上に板がバサバサって感じで敷かれてて誰かが作業した跡がありました(-ω-;)

オブジェクトをRezしたりする土台に使うくらいだったら全然OKなんですが、足場作ったら移動させて最低でも20~30mは距離空けてほしいですよね。。。いや、周りガラ空きなんですから100mぐらい離してくださいよ。ホント落ち着いて作業(放置とか)できないじゃないですか^^;

2009年10月11日日曜日

検索が改悪されてるような

ラッキーレターにラッキーレターoneがセットになったので、Xstreet SLに出してるラッキーレターの説明を修正して、その後マーケットプレイスのトップからlucky letterやlucky boardって入れて検索してみたんですよ。そしたら今まで1ページか2ページ目に表示されてたはずなのに、何ページ目まで見ても関係ない商品ばかりで出てこなくなってました@@; 出品してるカテゴリを選んだら1ページ目に出るんですが、これじゃあ、お客様に検索で見つけてもらえないかも知れませんよね。なので広告費払ったら1ページ目に出るようになるかなって思って、思い切って999L$払ったんですけど、それでも出ませんでした。。。ううぅ、何かリンデンに騙されてるんでしょうか>< って思ったらログインした状態で検索結果がSort by most popularityになってました^^;;

前キャンプとかの規制と関連してトラフィックスコアやサーチランクの計算も変更されたと思うので、インワールドでも検索してみたんですね。そしたら、前はたぶん2ページ目くらいで出たと思うんですが8ページ目に落ちてました。たぶん自分名義の土地にお店構えてる人が設置してるボードとか、土地の説明にキーワードを記入してるのばかりが上位に表示されてるので、商品検索には前より使えなくなったんじゃないかなって思います。検索結果を販売設定してる商品(BuyかPayになってるもの)に絞れたらいいんですけど。。。うちみたいにお店をレンタルしてる人には不利ですよ。ホント、リンデンの印象が更に悪く見えてきました。何の検索結果を良くするために変更したんでしょう? えーと、これはジャックリンデンって人から嫌がらせ受けてるってアビューズレポート出したらいいんですかね?www

それで、検索が役に立たないのでインワールドで少し宣伝しようってことで、ADボード(広告用看板のレンタル)を探して何ヶ所か広告出してみたんですよ。でも結構時間かかってしまって疲れました。日本のモールを中心に探したんですがADボード設置してるところってあまりなかったし、海外は結構あったけど週100L$とか高すぎて全然借りる気にならないところが多かったので^^;

2009年10月10日土曜日

LSL CON 2009始まりました

LSL Convention 2009っていうスクリプトの祭典が本日からNew ScriptっていうSIMで開催されてます^^ あ、でもhttp://lsc2009.slmame.com/見たら9日の21時にオープニングセレモニーって書いてあったので、前日に記事書いたほうがよかったかもですね^^;;

60点以上のスクリプト作品が展示されてるそうで、うちは2点出展してます。ベンチとName2key Pipes利用サンプルっていうのなんですが、ベンチはうちで普通に60L$で販売してる商品です^^; Name2key Pipes利用サンプルっていうのは何かサブタイトルみたいになっちゃったんですが、Yahoo! Pipesで作ったパイプを使ったサンプルって感じのスクリプトでホントはアバターキーファインダーっていう名前なんですよw こちらはオープンソースで無料です。それで、どっちも地味なアイテムなので展示も質素にしました^^;

今年は展示されてるアイテムの販売もOKということなので、その場で購入できるようになってるものも多いと思います。それからイベント期間中は色々プログラムが組まれてて、リンデンの日本語担当の方を招いてオフィスアワーとかも計画されてます。
LSL Convention Japan 2009 のスケジュール

期間は10月10日(土)~10月18日(日)です。皆様是非お越しくださいね^^
http://slurl.com/secondlife/New%20Script/230/183/30

私は人多いの苦手なので、たぶん人があまり居なさそうな時間帯にちょっと見に行くぐらいかなって思いますけど^^;

2009年10月9日金曜日

Lucky letter one バグがありました

当選レター表示部がグレーになるバグらしいものが確認されました。このバグはオーナーが変わった場合だけ発生するみたいです。。。つまり私からこの商品を買ったときですね(おぃ

現在、原因を調査中です。申し訳ございません。m(_ _)m

10月9日3時頃追記: llGetTextureを使って表示中のテクスチャをチェックしてllSetPrimitiveParamsで操作しようとしてた部分があったのが原因でした。llGetTextureはオーナーに対してフルパーミッションのオブジェクトでないと使えないの忘れてたんですね orz
購入者様には修正版をお送りしました。修正版のバージョンはV1.0.1になります。あとアップデートサーバーのログを見て最近ご利用頂いてる方にもお送りしましたが、もし抜けてましたらお手数ですが再度ご利用くださいますようお願いします。

2009年10月7日水曜日

Lucky letter one V1.0.0 リリース

1プリム化したラッキーレターoneが一応完成してラッキーレター(3プリムのラッキーボード)と2台セットで販売中です。価格は現在L$120のままなんですけど、来月にはL$180に値上げの予定なので、購入を検討されてる方はお急ぎください。。。宜しくお願いします^^;

それから、今までに通常版のラッキーレターをお買い上げくださいましたお客様は、Mansion Mall店などに設置してるアップデートサービスで、ラッキーレターoneも一緒にお受け取りできますので是非ご利用くださいね^^

メタコマースの通販のみで売ってる譲渡可能版ラッキーレターは1プリムのラッキーレターoneに変更しました。3プリムの譲渡可能版をお持ちのお客様は交換OKなので、ご希望の方はお手数ですがご連絡お願いします。

10月8日17時頃追記: ソラマメに商用登録してるモールでテナントは投稿できるようにしてくれてるブログがあるので、今回はそちらでもちょっと宣伝してみようかなって思ってたんですね。そう思ってたら何か急に数台売れてて、特に颯月で出てたのであれって思ったら、marukoさんっていうYs@モールのスタッフされてる方が既に記事書いてくれてました。。。ありがとうございます><
http://ysdesign.slmame.com/e748871.html

11月1日追記: 今日予定通り値上げしました。宜しくお願いします。

2009年10月6日火曜日

クマッ♪ション村にラキボがいっぱい♪

先月から店舗を借りてるクマッション村にラッキーボードコーナーみたいなのができたので、うちもラッキーレターoneを設置させてもらいました^^

賞品には安価な商品なんですけどカラフルスタンドランプを入れています。。。んー、最近プライズ用のアイテム作ってないですね^^;

設置してたときは、たぶん20台くらいあったでしょうか。あと、手前にはアイテムキャンプも設置されてるので、皆様是非お越しくださいね^^
http://slurl.com/secondlife/Kourinbou/123/126/21

2009年10月5日月曜日

ラッキーレター賞品 - 十字架

現在Mansion Mall店にデモって感じで置いてるラッキーレターには、前フリー配布してたクラゲピアスを入れてるんですけど、その横に1プリムの新型ラッキーレターを設置してきました^^

試作品のラッキーレターoneは現行機種とそっくりだったんですが、やっぱり紛らわしいかなってことで、一部を除いて文字の色を白にして影付加工って感じに変えたんですよ。あとロゴの部分は何となく金属っぽいグラデーションにしました。

賞品は販売してる十字架のパーミッションをコピー不可、譲渡可に変更したものを入れました。この十字架もV1.1.1でキャンプのと同じようにsitポジションを自動調整するようにバージョンアップしてます。。。でも装着したときは手動で調整なんですが^^;

ラッキーレターoneは一通りテストが終わって発売間近です^^

それはうちの商品では。。。

先月は特に間違いのIMが多かったような気がします。。。ときどき他の店のオーナーと間違えてお問い合わせしてくる人がいるんですよ^^;

内容が、他の色のドレスに交換してほしいとか、アニメーションのことだったり、何時間待っても当たらないので同じものを売ってくれない?とかなんですね。。。ええ、うちで販売してるキャンプやラキボ、それにベンダーなどが原因のようですw

OwnerとCreatorをボタン押し間違えちゃうんだと思うので、クリエーターのほうは少し小さくするとか何か工夫して、間違えにくいようにビューワー改良してほしいですね。

それだけ販売台数出てるんだって思ったらホント嬉しいんですが、そうゆうIMが増えてきたら結構疲れますよ。。。;

2009年10月3日土曜日

ラッキーレターone

テクスチャが面倒なので、なかなか製作する気がおきなかったんですが、何とか頑張って1プリム化したラッキーレターの試作品を作りました。1プリムのラキボって現在は何名か製作されてる方がいますので、うちも負けてられないって感じでw

私が知り合いに、ラッキーボードは無理すれば1プリムでも作れますよwって言ったのは去年の夏ごろだったでしょうか。。。発想はかなり前からあったんですよ。なので今になってやっと実現って感じでしょうかね^^;

ラッキーレター開発してたとき出来れば2プリムにしたかったんですが、レターの表示部を中央に配置したかったので3プリムで妥協したんですね。でもその数ヶ月後に2プリム化されたボードが、ある業者から発売されて、そのボードはうちのよりプリム数少ないところが魅力的ですねって、知り合いに言われたんですw それでちょっとショック><だったので1プリム化の案はそのとき思いついたんですけど、1プリムだと自作スキンが貼れないとかテクスチャの効率が悪いっていうデメリットもあるので結局当時は作らなかったんです。

1プリム化したLucky letterの製品名は「Lucky letter one」って当時から決めてたんですね。もし発売するんだったら、1プリム化によるデメリットもあるのでバージョンアップじゃなくて別機種にしたほうがいいかなって思ったんです。なので当時製作まではしなかったんですが製品名まで決めてたので結構マジだったりします^^;

写真は現行機種のLucky letterとそっくりですが、試作品のLucky letter oneです。ちょっとレターの文字サイズが小さくなってしまいましたので、テクスチャを直したほうがいいかもですね。。。orz

ラッキーレターoneでは、数字は「0~9」のひとまとめのみで、時間間隔は最大60分です。それ以外の機能は現行機種とほとんど同じですが、ボードをあまり大きく伸ばしたらラッキーレターよりテクスチャの粗さが目立ってくると思いますw

見た目も似てるのでラッキーレターと被るんですが、何となく現行機種は廃止したくないし、似た商品を増やすとややこしそうなので、完成したら現行機種とセットにして販売しようかなって思ってます。それでお値段もちょこっと値上げして。。。^^;;

さて、今度は先手打って1プリムのミッドナイト○○○でも作りますかねwww これはかなり流行ってるのに、まだ日本人は誰も目をつけてないみたいなので、今のうちにパクったら結構売れそうですよね( ̄ー ̄)ニヤリ

meta LIFEに登録してみました

何ヶ月か前に勧誘のノートみたいなのが届いてmeta LIFEっていう通販があるって知ってたんですが、昨日、何となく登録してみました。

まだ商品の登録作業が一向に進んでませんけど^^; 結構面倒な作業なので、とりあえず売れ筋を何点か登録して様子を見たいと思ってます。

掲載される商品の画像はmeta LIFEにアップロードするんじゃなくて、インワールドにあるテクスチャのUUIDを記入するようになってるんですよ。んー、便利そうな。。。そうでもないような。。。? ^^;

2009年10月2日金曜日

OnRezが無くなって。。。

Xstreet SLがセカンドライフに統合されてから、前OnRezであったみたいな通販に出品してる商品が買えるベンダー出ないかなって思ってたんですが、全く出そうな気配もなさそうですね。出たら是非ほしいって思ってるんですけど。。。;

何でOnRezまでリンデンが買収する必要あったんでしょう? ただSLの大手通販を1つだけにしたかっただけなんじゃないかなって。。。何かそんな気がしてきました。

買収後OnRezはビューワーのリリースもやめちゃったみたいで、ブログも無くなってるし。。。詳しいことは何も知らないですけど、外から見たらリンデンにムカついて撤退しちゃったんじゃない?って思っちゃいますよ。。。現在OnRezのSIMはまだあるみたいですが。

最近のキャンプなどのよくわからない規制(ラッキーチェアなども対象らしいけど公式な発表がないみたい。。。)とかもあるので、最近リンデンのイメージが何かあまり良くないですねw

2009年9月30日水曜日

Help Island

アバターが生まれたとき最初にスタートするヘルプアイランドっていう場所ありますよね。。。一応検索してみたらオリエンテーションアイランドになってる情報があったので、昔はそう呼ばれてたんでしょうか? 私は最初始めたとき気にしてなかったし、結構すぐテレポートして出ちゃったので覚えてないんですがw

1年ほど前、登録時の初期アバターが新しくなってからですかね、予備のアバターを登録したときにSIM名を見たらHelp Island 210になってたんですよ。この数字が異なるSIMが複数あるみたいで、また次登録したときは違う番号になってたと思います。

このヘルプアイランドはテレポートして出てしまうと、もう戻って来られないんですよねw
メインランドにHelp Island Publicっていう似た場所がありますけど、そことは全く別です。


でも、ある日マップを開いて何となく見てたら、最初のヘルプアイランドらしいSIM郡があったんですよ@@


SIM郡の全体です。SIM名の数字は全て200番台になってて40個くらいあるみたいでした。

場所はTorleyさんHereからしばらく北に上がったところにあります。やっぱりテレポートはブロックされてて入れないのでマップで見ることしかできないですけどw
http://slurl.com/secondlife/Help%20Island%20201

2009年9月26日土曜日

プライズキャンプとマネーキャンプ、全機種グループ限定機能追加

プライズキャンプ4機種とゾーンキャンプ以外のマネーキャンプ5機種にもグループ限定機能を実装して、機種によりますが他にも何ヶ所か改良しました^^

ついでにプライズキャンプ4機種は、ちょっと値上げしたんですよ^^;
Prize camping chair L$50 → L$70
Prize camping cross L$50 → L$80
Prize camping dance pad L$50 → L$60
Prize camping beach chair L$90 → L$100

プライズキャンピングチェアはプライズキャンピングビーチチェアと同じポーズを入れました。
でもマネーキャンピングチェアのほうは気分的にポーズ入れてません。。。これ発売以来1台も売れてないんですよwww

十字架はプライズキャンプ、マネーキャンプともアバターの身長をチェックして、磔の位置が大体いいくらいの位置に自動調整されるようにしました。これで子供とか小さいアバターもきちんと磔できますw

プライズキャンプは4機種ともバージョンはV1.1.7になります。マネーキャンプ5機種は価格変更なしで、バージョンはチェアがV2.1.1、その他はV1.2.1になります。

旧バージョンの購入者様でアップデートご希望の方は、お手数ですがご連絡くださいね^^

2009年9月25日金曜日

ラッキーオブジェクトのスクリプト

今回は名前の最初の文字が一致したら賞品がもらえるラッキーボックス(ただの箱なのでw)ラッキーオブジェクトのスクリプトです。うちで販売してるLucky letterっていう製品(ラッキーボード)がありますが、それの必要最低限の機能だけのスクリプトって感じですね^^

レターや残り時間は箱の上にフローティングテキストで表示しますが、テクスチャで表示するように改造してボード型にするとLucky boardのようになります。更にタッチを調べる部分をsitに変えて椅子を付けたらLucky chairのような装置になります。更に更に、椅子をトイレに変えたら。。。って、もういいですかねwww

// Lucky object
integer interval=5;  // レターチェンジ間隔(分)
integer time;  // 残り時間用
string letter="-?ABCDEFGHIJKLMNOPQRSTUVWXYZ";  // ラッキーレターに使う文字
string ll;  // ラッキーレター用
string tmp;  // 前回のレター記憶用
string prize;

win(key id, string name)
{  // 当たったときの処理
    llSay(0,name+", you win!!");  // 当たりー♪
    llGiveInventory(id,prize);  // アイテムを渡す
    init();  // initへ
}

init()
{
    llSetText("OFF",<1,1,1>,1.0);
    prize=llGetInventoryName(INVENTORY_OBJECT,0);  // コンテンツ内の1つ目のオブジェクト名
    ll="";  // レターをクリア
    time=0;  // 残り時間を0に設定
    if (prize) llSetTimerEvent(0.1);  // 賞品が入ってたら0.1秒後にタイマー
    else llSetTimerEvent(0);  // 入ってなかったらタイマー停止
}

default
{
    state_entry()
    {
        init();  // initへ
    }

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

    touch_start(integer total_number)
    {
        if (ll == "") return;  // レターが設定されてないときはリターン
        key id=llDetectedKey(0);  // タッチしたアバターのキー
        if (id == "" || id == NULL_KEY) return;  // キーが取得できなかったらリターン
        string name=llDetectedName(0);  // タッチしたアバターの名前
        if (ll == "?") win(id,name);  // ラッキーレターが?だったら当たり
        else {
            string s=llGetSubString(name,0,0);  // アバター名の最初の1文字
            integer num=FALSE;
            if (s == "0" || (integer)s > 0) num=TRUE;  // 文字が数字かをチェック
            if (ll == llToUpper(s)) win(id,name);  // 文字を大文字に変換してラッキーレターと一致したら当たり
            else if (ll == "0-9" && num) win(id,name);  // 文字が数字でラッキーレターが0-9だったら当たり
            else llSay(0,"Sorry, your name begins with "+s+".");  // それ以外はハズレ;;
        }
    }

    timer()
    {
        llSetTimerEvent(60);  // タイマーを60秒にセット
        if (time < 1) {  // 残り時間が1以下になったらレター変更
            time=interval;  // 残り時間を再設定
            if (ll == "") ll=tmp;
            while (tmp == ll) {  // 前回出たレターと被らないように
                integer i=llFloor(llFrand(llStringLength(letter)));  // 乱数
                ll=llGetSubString(letter,i,i);  // 乱数からラッキーレターを決定
                if (ll == "-") ll="0-9";  // レターが-だったら 0-9にする
            }
            tmp=ll;  // 今回出たラッキーレターを記憶
            llSay(0,"The lucky letter is "+ll+".");  // チャット表示
        }
        // フローティング表示
        llSetText("If your name begins with "+ll+",\ntouch to get a prize!\n"+(string)time+" minute(s) left.",<1,1,1>,1.0);
        time--;  // 残り時間を減算
    }
}

賞品のオブジェクト(オブジェクト以外は箱詰めして)をコンテンツに入れて、レターチェンジの数値を変えて使ってくださいね^^

10月10日追記: あ、箱型プリムのまま使うとは限らないですよね。。。てことで、タイトルもラッキーオブジェクトに変えましたw

10月14日追記: 一応タッチしたアバターのキーが取得できないときリターンさせるようにしました。

YouTube TV screen V1.0.9

変換に利用してるサーバーが重いときは見れないっていう問題があるんですが、一応注意書きのノートを添付して販売を再開しました。いつもTVを使用される時間帯が重くて使えないって方は、うちでレンタルしてるサーバーに置いたスクリプトをwww.youtubemp4.comの代わりに設定することもできます。

それから、本バージョンでは権限のない土地でrezしたときグレー画面になってしまう不具合を直しときました^^;

宜しくお願いします^^

2010年5月21日追記: 2010年3月のユーチューブの仕様変更で、この装置はユーチューブが再生できなくなりました m(_ _)m

2009年9月24日木曜日

ランダムチャットマネー他3機種、グループ限定機能実装

ランダムチャットマネーランダムマネーギバーゾーンキャンプの3機種もグループ限定機能を追加しました^^

それぞれバージョンは
Random chat money V1.0.7
Random money giver V1.0.2
Zone camp V1.0.1
になります。

あと、ランダムチャットマネー、ランダムマネーギバーは、ゾーンキャンプと同様にフローティングテキストの色が11色から選べるようにしました。。。それから、ゾーンキャンプはメッセージに英単語の綴り間違えてるところがあったのでついでに直したんですよ^^;

アップデートご希望の購入者様は無料で対応いたしますのでご連絡くださいね^^

2009年9月23日水曜日

Lucky letter V1.5.3 - グループ限定実装

キャンプ、ラッキーチェア/ボードなどの規制があるので、何か集客用品の改良に気が進まなくなってきたんですが、とりあえずラッキーレターに今回のバージョンアップでグループメンバー限定機能を付けました。

あと、一応ダブルクリックでもメニュー出せるように変更したのと、レター部分の色を変えても不具合の無いように直しました。。。文字色を変えてる方とか見たことあるんですが、スクリプトで色を打ち決めしてる部分があったので「0~9」が出たとき数字が黒になったんじゃないかなって思います。

通常版またはグループ限定改造版をお持ちのお客様は、Mansion Mall店などに設置してるアップデートサービスをご利用くださいね^^

9月26日追記: Group onの状態でRezしたとき、装置にグループがセットされてなかったら、一応Group offの状態になるように修正しました。バージョンはV1.5.3aになります。

2009年9月22日火曜日

複数登録できる1プリムテレポート看板

去年、1プリムで4ヶ所登録できるテレポート看板のスクリプトを作ったんですが、今回はそれをちょっと改良して、縦横好きな個数で分割設定できるようにしたテレポート看板のスクリプトです。

写真は横3分割、縦2分割にして、ショップの支店5ヶ所登録で使用してます^^

テクスチャは登録するテレポート先を1枚にまとめたものを作って使用します。縦横等間隔に分割したマス目に、各テレポート先の写真を左上から右に向かって順に配置していく感じで作成してくださいね。

// Multi TP-board

integer col=3;  // 横の分割数
integer row=2;  // 縦の分割数

list tp=[ // "テレポート先","SIM名",位置,
"Mansion Mall","Graybar",<228,179,30>,
"Market Beach Mall East","Triasm",<242,137,21>,
"SUNSET SHOPPING MALL","JapanSeychellesLand",<72,70,23>,
"SL-Shopping.net-Mall-Jiminy","Jiminy",<115,23,106>,
"+*+*BELLE ROSE*+*+","Artsebarsky",<236,184,22>,
NULL_KEY];  // データの最後のカンマ用
integer len;

string slurl(integer i)
{  // SLURL生成
    vector v=llList2Vector(tp,i+2);
    string str=llList2String(tp,i);
    // SIM名をブランクにしてるものは閉店表示
    if (llList2String(tp,i+1) == "") return str+"... closed\n";
    str+=" http://slurl.com/secondlife/";
    str+=llEscapeURL(llList2String(tp,i+1));
    str+="/"+(string)((integer)v.x);
    str+="/"+(string)((integer)v.y);
    str+="/"+(string)((integer)v.z)+" \n";
    return str;
}

map(integer num)
{  // マップ表示用
    integer i=num*3;
    if (i >= len) {  // テレポートの登録数が少ないとき
        llWhisper(0,"This area is a blank.");
        return;  // リターン
    }
    string sim=llList2String(tp,i+1);
    vector pos=llList2Vector(tp,i+2);
    if (sim) llMapDestination(sim,pos,ZERO_VECTOR);  // マップ表示
    llWhisper(0,slurl(i));  // SLURL表示
}

default
{
    state_entry()
    {
        len=llGetListLength(tp)-1;  // ヌルキーを除いたリストの長さ
    }

    touch_start(integer total_number)
    {
        integer i=llDetectedTouchFace(0);  // タッチした面の番号を取得
        if (i != -1) { // SLビューワーが対応のとき
            vector v=llDetectedTouchST(0);  // タッチした表面の座標
            i=llFloor(v.x*col)+(row-llCeil(v.y*row))*col;  // 座標を番号に変換
            map(i);  // mapへ
        }
        else { // SLビューワーが非対応だったらSLURLを全部表示
            string str="Open the chat histry and click the SLURL.\n";
            for (i=0; i < len; i+=3) str+=slurl(i);
            llWhisper(0,str);  // チャットでSLURL表示
        }
    }
}


結構移転とか閉店とかもありそうなので、SIM名を記入する部分のデータを空""にすると ○○モール ... closed って表示するようにしてみました。テクスチャを直すまでの応急処置的な表示って感じでw

2010年4月2日追記: ビューワー2.0.0からチャット履歴のスペースの入ったSIM名のリンクがおかしくなるのでURLエンコード追加しました。内蔵ブラウザがGeckoからWebkitに替わった影響かも知れません。。。て、元々省略してたのがいけなかったんですが orz