ソラマメブログ
QRコード
QRCODE
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 2人
オーナーへメッセージ

2008年03月10日

自動オブジェクト配布機

HAVOK4対応版を実際に対象顧客へ渡す機械です。
今回の対象者は100人ちょっと居ました。そして渡すオブジェクト総数は180ちょっと・・・アワワ。
けっこう対象を抽出して慌てました。^ ^;
まあ、これだけ多くの人が購入してくれていたと言う事ですよね。だから、しっかりサポートもしなくては。

で、色々考えたのですが、以前サメシリーズの不具合の時みたいに、いきなり送信しても、このご時勢では「受け取り拒否」される危険性も高いと思いました。
かと言って、一人ひとりにIMで連絡して、事情を説明して配布と言うのでは、とても時間が足りません。
また、自分のIN時間帯は日本時間の午後9時~11時程度の2時間が精一杯なので、時間帯の合わない人も多いと思います。
実際に購入記録を見ると、大部分が私が寝ている間に発生しています。^ ^;

そこで、今回は本店内に自動配布機を置いて、来店して受け取ってもらう方式にしました。
要求事項は次のようになります。

1.購入者に対してのみ配布する。
2.コピー不可の商品が多いから、配布は1回だけに制限したい。
3.配布した記録を残したい。
4.できるだけ簡単な操作で受け渡しをしたい。

と言うところです。
1,2を満足させるには、次のようなデータが必要になります。
1)顧客名
2)購入商品名
3)受渡しフラグ
1)と2)はTransaction Historyのデータから抽出して取り出せます。これが180件ちょっとある訳です。
そして3)の受渡しフラグは、スクリプトで商品を渡した事を、内部的に記録する部分です。
未渡し時=0、 渡し済=1と言う感じで記録して管理します。

次に3ですが、これも少々難問でした。
一番簡単で確かな方法は、SLのTransaction Historyに記録される方式で渡す事です。
その為には、「0L$の支払い」と言う方式を取らなければなりません。要は支払いスクリプトを入れて制御する方式です。
でも、これは4の要件には少々反します。「支払い」をクリックして、「0L$」をクリックしてもらう必要があります。
そして更には渡す際にダイアログが出てきて、それもクリックしないと駄目です。

できればパネルにタッチするだけで、GiveInventoryで渡してしまいたいと思っていました。
GiveInventoryですが、相手のプロフィール画面やアバター直接の場合は、Transaction Historyに記録が残るのですが、スクリプト内で行ってしまうと残らないのです。
そこで、今回はE-mail機能を使って、引渡しが完了したら、自分宛にE-mailを送信して、メール上で記録が残るようにしました。

これらに基づいて作成した物が次のような仕様のものです。

自動オブジェクト配布機

アバターがタッチすると、タッチイベント内でllDetectedKeyとllDetectedNameでタッチした人の名前とUUIDを取得します。
最初に名前から、コンテンツ内の顧客リスト(ノートカード)を1件づつ読み込んでマッチングします。
該当する名前が存在したら、その人が購入した商品も同時に読み込まれていますので、対応する商品をコンテンツから相手にGiveInventoryします。その際、スクリプト内のリストに「受渡しフラグ」を持たせておき、そこに済みマークを記録します。
そして「サンキュー・メッセージ」を出すと同時に、自分宛にE-mailを送信すると言う仕組みです。

当初は、1台で全ての顧客、全ての商品を対応させる予定でした。
その方がお客様には分かりやすいですからね。
ところが、まず180件もの購買記録は、スクリプト内部には保持できない。
また、受渡しフラグだけでも・・・と思ったのですが、それだけでも100件も入らないと言う事が分かりました。
リストに保持できるデータ量って、思っていた以上に小さいのですね。正直言って「困った」状態でした。><
まあ工夫すれば、180件程度のフラグは内部で管理できるかもしれませんが、今回は正攻法で取り組んでいたので、そこまでは考えるのを止めました。

そこで止む無く、商品別に顧客リストを分割しました。
それでも「顧客名、商品名、受渡しフラグ」にすると入りきりません。結局内部的には「受渡しフラグ」だけ保持して、後は外出しでノートカードを都度読み込んで処理する事にしました。

利用する側としては面倒なんですけどね・・・止むを得ません。
とりあえず、こんな感じで対象6商品分ですから、6台の配布機を作成して設置しました。
単純な構造にしたので、それぞれの機械は全て同じスクリプトになっています。違いは顧客リストの中身とコンテンツの中に入れた配布する商品だけです。そん点では汎用的で、今後も色々と使えるでしょう。
まあ、こう言う用途では2度と使いたくは無いのですが・・・^ ^;

なかなか皆さん来てはくれないでしょうが、出来れば早く渡しきってしまいたいと思います。今月中には終わらせたいな~。。。



同じカテゴリー(スクリプトのお勉強メモ)の記事画像
llDetectedTouchST
llAddToLandPassList
【注意】Bulk Permissions機能は使っては駄目!
HTTP-INを使ってみた。
オブジェクトへの指示
ペットを作るには(6)
同じカテゴリー(スクリプトのお勉強メモ)の記事
 llDetectedTouchST (2009-07-24 14:05)
 llAddToLandPassList (2009-07-24 10:23)
 【注意】Bulk Permissions機能は使っては駄目! (2009-07-21 12:15)
 HTTP-INを使ってみた。 (2009-07-19 14:51)
 オブジェクトへの指示 (2008-10-22 12:42)
 ペットを作るには(6) (2008-09-25 10:38)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。