2018年12月11日火曜日

そろそろ引退します。。。

突然なんですが、もう引退することにします。
皆様、永らくのご愛顧ありがとうございました。。。m(_ _)m

2018年7月24日火曜日

L$ Exchange Rate Board V1.1.0

L$ Exchange Rate Boardなんですが、2週間前ぐらいから動作してないことに気が付きました。そのときは、サーバーが調子悪いんじゃないかな?って思って、きっと数日後にはケロッと直ってるはず!って期待してたんですよ。でも1週間過ぎても直らないので、もう流石に知らないふりはできないなって思い始めて、色々と調べてみると原因はllHTTPRequestに関わるバグで、もう1ヶ月か2ヶ月くらいバグ修正されてないみたいでした。#BUG-216320

簡単に書くと、現時点で下記みたいにllHTTPRequestからSLのライブデータフィードを取得しようとすると499エラーが出ます。
// 取得するライブデータフィードURL
string url="http://secondlife.com/httprequest/homepage.php";

default
{
    touch_start(integer total_number)
    {
        key id=llDetectedKey(0);  // タッチしたアバターのキー
        if (id == llGetOwner()) {  // それがオーナーなら
            llHTTPRequest(url, [], "");  // HTTPリクエスト実行
        }
    }

    http_response(key request_id, integer status, list metadata, string body)
    {  // HTTPレスポンス
        if (status == 200) {  // 正常(ステータスコードが200)なら
            llOwnerSay(body);  // データ内容を表示
        }
        else {  // エラーのときはエラー番号を表示
            llOwnerSay("エラー HTTP status "+(string)status);
        }
    }
}

SL公式のデータフィードがインワールド内からゲットできなくなるなんて想定外だったので、現バージョン(当装置にはバージョン表記ないですけど一応V1.0.0かな?)のL$ Exchange Rate Boardはエラーも出さなくて、全くうんともすんとも言わない有様です^^; ちなみにライブデータフィードは普通にウエブブラウザで開くとエラーもなく開けるんですよ。なので外部サーバーを経由させてデータを取得するように改造しました。。。わざわざ外部サーバー使うって、何かバカみたいなんですけどねw まあエラー出たときだけ外部サーバーに頼るって感じの改良です。

今までにL$ Exchange Rate Boardをお買い上げ頂いたお客様には既にV1.1.0をお送りました。もし受け取れなかったお客様は再送しますのでご連絡くださいね。

2018年7月1日日曜日

名前からアバターキーを取得するスクリプト

ずっと存在しなかったアバター名からアバターキーを得る関数が最近できてたので、今回はそれを使ったスクリプトを書いてみました。昔は名前からアバターキーを調べるために、外部サーバーを併用するなどしてSLの検索などからHTMLデータを取得してキーを切り出すっていう面倒な方法しかなかったので便利ですよね。んー、ただ私はこの関数、プライバシーとかの関係で実装されてないのかなって勝手に思ってたんですけど、今頃になって実装されたってことはそうでもなかったんでしょうかね?w

新しく実装された関数はllName2KeyllRequestUserKeyです。llName2KeyはllKey2Nameと同様データサーバーを通さないので、同一SIM内かその周囲数m以内に対象アバターがいないと値が得られないんだと思います。。。ってことは名前からキーを割り出すっていう場面では、この関数ってあまり使い道なくないですかね?www

そういうことでllRequestUserKeyの方を使って、早速アバターキーを取得するスクリプトを書いてみました。

// アバター名からアバターキーを取得

integer ch=5;  // チャット入力に使うチャンネル番号
integer listen_handle;  // リッスン関数を扱うための変数
key query;  // データ問い合わせ用変数

listen_end()
{  // チャット受信またはタイムアウト時の処理
    llListenRemove(listen_handle);  // リッスンを破棄
    llSetTimerEvent(0);  // タイマー停止
}

default
{
    touch_start(integer total_number)
    {
        key id=llDetectedKey(0);  // タッチしたアバターが
        if (id == llGetOwner()) {  // オーナーなら
            llOwnerSay("「/"+(string)ch+" アバター名」でキーを検索します。");
            llListenRemove(listen_handle);  // 一応リッスンを破棄して
            listen_handle=llListen(ch, "", NULL_KEY, "");  // リッスン開始
            llSetTimerEvent(60);  // タイマー60秒
        }
    }

    timer()
    {  // 指定時間が経過したら
        listen_end();  // listen_endへ
        llOwnerSay("時間切れです><");
    }

    listen(integer channel, string name, key id, string msg)
    {  // チャットを受信
        if (channel == ch) {  // 設定したチャンネル番号なら
            listen_end();  // listen_endを処理して
            query = llRequestUserKey(msg);  // アバターキー問い合わせ
        }
    }

    dataserver(key queryid, string data)
    {
        if (queryid == query) {  // 問い合わせたデータを取得したら
            llOwnerSay("アバターキー "+data);  // アバターキーを表示
        }
    }
}

オーナーがタッチして「/5 アバター名」をチャットで入力するとアバターキーを表示します。入力するアバター名はユーザーネームでもレガシーネームでもオッケーみたいです。

7月3日追記: リッスン開始の直前に念のためリッスン破棄するよう修正しました。

2018年2月25日日曜日

唯一の支店が閉店になりました。。。

Market Beach Mall East店なんですが、都合により閉店になりました。これにより、うちの支店は全て無くなって、実店舗は本店のみの営業になります。まあここ数年は商品開発も全くやってない状態なので、経営規模の縮小も当然の成り行きって感じもしないでもないんですけどね。。。orz

実は今年に入ったぐらいからオフライン中のIMがメールで通知が来なくなってしまってて、それでレンタル料を滞納っていうか、滞納期間もとっくに過ぎちゃって、しばらく商品だけ置きっぱなし状態になってたんですよ^^;
何かメールアドレスの変更の所でメールアドレスの登録確認みたいなのをやったらIMのメール通知は直ったんですが、1~2ヶ月も気が付かなかったってのがホント情けないですよね^^;;

皆様、長らくMarket Beach Mall East店のご利用ありがとうございました m(_ _)m

2017年12月12日火曜日

チップジャーに入れると分配できるスクリプト

えっと、今回は久しぶりに簡単なスクリプトです。まあ記事書くのも、すごく久しぶりでマジ放置状態になってたりするんですが。。。^^;

このスクリプトをチップジャーのコンテンツ内に入れると、チップが支払われる度に分配できます。基本的に支払いを行うオブジェクトなら何でも動作しますが、異なる金額で複数の商品を販売するベンダーなど返金機能がある装置には向いてません。

// チップジャー用分配スクリプト

key avatar="00000000-0000-0000-0000-000000000000";  // 分配を受けるアバターのキー
integer  percent=10; // 分配率(%)
integer debit=FALSE;  // 権限確認用変数

default
{
    state_entry()
    {
        // プリムにスクリプトを入れたときL$引き落とし権限をリクエスト
        llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
    }

    touch_start(integer total_number)
    {
        key id=llDetectedKey(0);  // タッチしたアバターのキー
        if (id == llGetOwner()) {  // オーナーだったら
            // 変数debitが偽(権限が未許可)のときは権限をリクエスト
            if (!debit) llRequestPermissions(id,PERMISSION_DEBIT);
        }
    }

    run_time_permissions(integer perm)
    {
        if (perm & PERMISSION_DEBIT) {  // 権限が許可されたら
            debit=TRUE;  // debitに真をセット
        }
    }

    money(key id, integer amount)
    {  // チップの支払いが発生したとき
        // 分配額を計算
        integer commission=llFloor((float)amount*(float)percent/100);
        // 分配額が1~チップ額以内の範囲なら
        if (commission >= 1 && commission <= amount) {
            llTransferLindenDollars(avatar,commission);  // 分配金を送金
        }
    }
}

分配を受け取るアバターのキーと分配率を記入して、スクリプトをチップジャーに入れたら、L$口座からお金を引き落としできる権限を要求するダイアログが出るので許可してください。拒否してしまったときは、タッチすると再びダイアログを出します。最初のダイアログで間違いなく許可するつもりだったら、タッチイベントの部分(touch_start以下8行分)は必要ないので省略してしまっても構いません。

送金する関数は今回llTransferLindenDollarsを使ってますが、戻り値は使用してないので、従来のllGiveMoneyを使ってもオッケーです。

ちなみにベータテストグリッド(プレビューグリッド、Aditi)で送金テストする場合、L$取引履歴はこのアドレスで見れます。

2016年10月5日水曜日

DJチップボード販売中♪

2~3年ぐらいか前にPCに繋いでたヘッドホンが壊れたんですね。それで音質とかあまり気にしないので、安物でもいいやって思って百均で売ってるのを買ったんですが、何か音が小さいっていうか、PCのボリュームを最大に上げても動画によっては音声がよく聞き取れなかったんですよ。でも取り敢えずそれで我慢して使ってたんですが、やっぱりよく聞こえないので結局は腹が立って捨ててしまって、その後もうちょっといい数百円のヘッドホンに買い替えました。。。んー、ホント安物買いの何とかですよねw

さて、本題のDJチップボードっていう装置なんですが、TADさんが経営されているCLUB DRAGONSHOUTcast SHOPメインストアで先月ぐらいから販売中です。

この装置は簡単に言うとチップジャーになっていて、普段は装置(土地)の所有者にチップが行きますが、装置に登録されたDJがタッチして切り替えると、そのDJにチップが転送されるようになって、表面のテクスチャと、土地のラジオも切り替わります。(←ちょっと何言ってるかわかんないですね?)
まあ詳しい使用方法はTADさんが書いてくださいましたので、そちらをご覧頂けたら安心してご使用になれると思います。今回は装置の製作だけで、いっぱいいっぱいだったので、対応は日本語のみ、説明書も他人任せになってしまいました^^;

DJチップボードはL$250で、SHOUTcast SHOP メインストアだけの限定販売です。また、こちらのお店ではSL内でラジオ放送やDJなどに使えるストリーミングサーバーのレンタルを扱っておられますので、興味のある方はそちらも是非ご覧になってくださいね。

:: SHOUTcast SHOP MainStore ::
http://maps.secondlife.com/secondlife/JollyRoger/179/16/3800
http://maps.secondlife.com/secondlife/JollyRoger/200/189/4090


2017年5月25日追記: SHOUTcast SHOPが移転されましたので、新しいアドレスに修正しました。

2016年4月10日日曜日

パソコンがブッ壊れた話。。。><

特に新製品を発売したっていうこともなかったので、すごく久しぶりの投稿になりました。

先月末にPCを再起動したとき、画面にDisk I/O errorって出て、突然立ち上がらなくなったんですね。それでLinuxのライブDVDを入れてみると起動して普通に使えたので、結局のところHDDの故障が原因という悲しい事態が判明しました。><

他の部品だったら交換すれば復旧できますけど、HDDはデータがね。。。SLの分はテクスチャやスカルプトなど製作途中で置いてるデータも結構あったんですよ。現在は新しいHDDにWindows10とソフトを入れ直して、大部落ち着いてきたんですけど、失われてしまったデータはもうどうしようもないですね。

5月5日追記: 詳しい人に相談したら、パーティションテーブルが壊れてる可能性はないか?っていう話が出て、MiniTool Partition Wizardっていうソフト(いわゆるHDDデータ復活用ソフトですね)を使ってみたら。。。な、何とデータがほとんど復活できてしまいましたーーーーーーー!!(@@;
最初の方のデータ(OSのシステムファイル)は部分的に完全に壊れてしまってたみたいで、壊れてたHDDから直接Windowsを起動するのはできなかったですが、現在の新しいHDDから起動したWindowsにHDDを接続してデータを無事読み出せました^^
んー、そういえば思い当たる節があります。USBメモリやSDカードにイメージデータを書き込めるソフトを試してたんですよ。そのデータを間違えてHDDに上書きしてしまってたようでした^^;;