商品が売れると電子メールでお知らせするベンダーボックスです。メールには、購入者、購入場所、
購入商品の情報が記載されます。通常のベンダーは、SLサイトの購入履歴から参照しますが、こち
らは、リアルタイムで電子メールでお知らせが来るので、幸せな気分になれます!?w
* メールの内容

「スクリプト内容」
//
// SHOP ZERO Tips27 EmailVendor v1.0
//
// Created by Zero2000 Kid 2008/05/10
//
integer price=100;
string packname="**SHOP ZERO**";
string emailaddress="xxxx@hotmail.co.jp";
string subject="Now on Sale !!";
integer ItemType=INVENTORY_ALL;
list Itemlist;
getItemlist() {
Itemlist=[];
integer i;
integer Itemct = llGetInventoryNumber(ItemType);
for (i = 0; i < Itemct; i++) {
string ItemName=llGetInventoryName(ItemType,i);
if (ItemName!=llGetScriptName()) {
Itemlist+=ItemName;
}
}
}
default
{
state_entry()
{
getItemlist();
llSetPayPrice(PAY_HIDE, [price, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
}
on_rez(integer int) {
llResetScript();
}
changed(integer change){
if (change & CHANGED_INVENTORY){
getItemlist();
}
}
money(key id, integer amount)
{
llGiveInventoryList(id,packname,Itemlist);
string message="Buyer : " + llKey2Name(id);
llEmail(emailaddress, subject, message);
}
}
「使用方法」
1. 1行目のpriceに価格、2行目のemailaddressに電子メールアドレス、3行目のpacknameに
商品のフォルダ名、4行目のsubjectに電子メールの件名を設定します。
2. ベンダーとなるオブジェクトを1つ作成します。(球でもボックスでも何でも構いません。)
3. オブジェクトにスクリプトをドラッグします。
4. オブジェクトに商品をドラッグします。(商品の種類、数に制限はありません)
以上で完了です。
オブジェクトを右クリックして、パイメニューから"支払い"をクリックすると商品を購入可能です。
右クリックだけで購入させたい場合は、オブジェクトを右クリック->編集->一般->左をクリックすると
を"オブジェクトの支払"に設定しましょう~♪
「スクリプトの説明」
今回のスクリプトのポイントは、moneyイベントです。
スクリプトの中にmoneyイベントを記述すると、オブジェクトのパイメニューの"支払い"というメニューが
有効になります。スクリプトを使用して商品を販売する場合は、購入ではなく支払を利用すると覚えて
おきましょう。
まず最初にstate_entryが呼び出されます。
state_entry()
{
getItemlist();
llSetPayPrice(PAY_HIDE, [price, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
}
state_entryでは、まずgetItemlistという関数を呼び出して、ベンダーの中に存在するアイテムの
アイテム名をItemlistというリスト型変数に格納します。
getItemlist() {
Itemlist=[]; // list変数初期化
integer i;
integer Itemct = llGetInventoryNumber(ItemType); // オブジェクト内のアイテム数の取得
for (i = 0; i < Itemct; i++) { // アイテム数の数だけループ処理
string ItemName=llGetInventoryName(ItemType,i); // アイテム名称の取得
if (ItemName!=llGetScriptName()) { // 本スクリプトを除外
Itemlist+=ItemName; // list変数にアイテム名を格納
}
}
}
* llGetInventoryNumberの詳細はこちらを参照ください。
* llGetInventoryNameの詳細はこちらを参照ください。
state_entryの2行目では、ベンダーの価格設定を行っています。
変数priceには、1行目で100を指定していますので、100L$で販売することになります。
PAY_HIDEの部分を変更すれば最大4つの価格を設定可能です。
詳しくはこちらをllSetPayPrice参照ください。
llSetPayPrice(PAY_HIDE, [price, PAY_HIDE, PAY_HIDE, PAY_HIDE]);
実際にリンデンドルが支払われるとmoneyイベントが発生します。
money(key id, integer amount)
{
llGiveInventoryList(id,packname,Itemlist); // list変数Itemlistに格納されたアイテムを
アバターに渡します。
string message="Buyer : " + llKey2Name(id); // 購入者の名称を取得します。
llEmail(emailaddress, subject, message); // 電子メールを送信します。
}
* moneyイベントの詳細はこちらを参照ください。
* llGiveInventoryListの詳細はこちらを参照ください。
* llEmailの詳細はこちらを参照ください。
またベンダーの商品を変更した場合は、changedイベントが発生し、Itemlist変数を再格納します。
changed(integer change){
if (change & CHANGED_INVENTORY){ // コンテンツの中身が変更されたとき
getItemlist(); // アイテム名をItemlistに格納
}
}
このようにスクリプトでベンダーを作成すると、商品販売時にメールやIMを送信したりと、
様々なアクションを実行することが可能になります。
次回は、これをさらに改良し、売上分配機能付きのベンダーの紹介をしたいと思います。
お楽しみに~♪(^-^)/
リンデンスクリプト Tips Intexへ