Site search

Google
WWW を検索 backup-beta.blogspot.com を検索

2009年1月14日水曜日

郵便ポストのスクリプト

今回はノートをドロップしたらオーナーに送るポストって感じのスクリプトを書いてみました^^

オーナー以外もコンテンツにアイテムを入れられるようにするにはllAllowInventoryDropですね。

まずはご意見、アンケート、提案などを入れられる簡単な投書箱です。
// 投書箱
default
{
    state_entry()
    {
        llAllowInventoryDrop(TRUE);  // インベントリーにドロップ許可
    }

    changed(integer change)
    {
        if (change & CHANGED_ALLOWED_DROP)
        {  // オーナー以外が入れたとき
            llWhisper(0,"Thank you for your suggestion.");
            llInstantMessage(llGetOwner(),"Got a suggestion.");
        }
    }
}

これはノートは中に蓄積して、オーナー以外がノート入れたときにオーナーにIMで知らせます。
入ったものは特にチェックしてないのでノート以外も入れられますけどね^^;

CHANGED_ALLOWED_DROPはオーナー以外がコンテンツに変化を与えたときしか反応しないので、オーナーが自分でノート入れたときは返事ありませんw
なので、オーナーが入れたときも反応させたいときはCHANGED_INVENTORYと一緒に使ってくださいね。


そして、ポストのスクリプトです。ただ、SLのサーバーなどが調子良くないときは通販とかネットワークド・ベンダーと同じで届かないことがあるかもです^^;
// ポスト(このスクリプトは実用には向いてません^^;)
default
{
    state_entry()
    {
        llAllowInventoryDrop(TRUE);  // インベントリーにドロップ許可
    }

    touch_start(integer total_number)
    {  // タッチしたら
        llWhisper(0,"Put your notecard for owner."); // オーナー宛のノートちょーだい^^
    }

    changed(integer change)
    {
        if (change & (CHANGED_INVENTORY|CHANGED_ALLOWED_DROP))
        {  // ドロップされたら
            llAllowInventoryDrop(FALSE);  // ドロップを不許可にしといて
            string str;
            integer note=FALSE;  // ノートの有無チェック用フラグ
            integer i;
            for (i=0; i < llGetInventoryNumber(INVENTORY_ALL); i++)
            {  // アイテムを1個ずつチェック
                str=llGetInventoryName(INVENTORY_ALL,i);
                if (llGetInventoryType(str) == INVENTORY_NOTECARD)
                {  // ノートだったらオーナーに配送
                    llGiveInventory(llGetOwner(),str);
                    llWhisper(0,"Sent "+str);
                    note=TRUE;  // フラグをTRUE
                }
                if (llGetInventoryType(str) != INVENTORY_NONE) {
                    if (str != llGetScriptName()) {  // このスクリプト以外は削除
                        llRemoveInventory(str);
                        i--;
                    }
                }
            }
            llAllowInventoryDrop(TRUE);  // ドロップ許可
            // ノートを受付けたときのメッセージ
            if (note) llWhisper(0,"Thank you for your notecard.");
        }
    }
}


2010年5月4日追記: ログインしてないときに届いたIMやアイテムなどの受け取れる数は上限が25でした。なのでこのポストのスクリプトは実用上問題ありますね^^; ノートを削除せずに蓄積していくようにしたほうが安心だと思います。

7 件のコメント:

  1. はじめまして
    いつも楽しく拝見させて頂いております。
    スクリプトを惜しげも無くブログにアップされてますが、
    他人がもし、同じ様な商品を制作していて
    その作り方などブログに掲載されてしまう
    そうなったら、その商品の価値は下がってしまいますよね。
    簡単なlslだからこそ掲載されてるのかもしれませんが、
    コピぺで誰でもスクリプトを入れることが出来てしまう。
    個人的な意見ですけど、
    もうちょっと自粛してもらいたいです。

    返信削除
  2. はじめまして。ご覧いただきありがとうござます。
    はい、うちはご覧の通り簡単なスクリプトだけを載せてます。市販されてるような商品は、簡単なスクリプトだけで成り立っているようなものではないと思いますので問題ないですよ。
    うちに載せてるのは長いものでも60行前後ぐらいでしょうかね。簡単なものですからスクリプト単体で販売するにしても、10とか20L$くらいだったら売れそうですが、こんなのに高値つけて売りますか?^^;
    それに、LSLを掲載されているブログはうち以外でもありますし、うちより複雑なLSLを載せてるところもありますよね。ネットを検索してもいっぱい出てくるし、セカンドライフのwikiにも高度なスクリプトは載ってます。
    ですから、うちだけを自粛させようなんておかしいんじゃありません?

    返信削除
  3. すごくたすかってます。
    自分商品として出しているから、自粛してもらいたいと言うのはおかしいとおもいます。作る自由もあれば載せる自由もある。
    Maiさんの意見を元にするならフリービーはダメなんですか?
    無償でスクリプトの制作依頼をうけるのはダメなんですか?
    あなたはネットも何も参考にしないで本当に一人でスクリプトつくりつづけたんですか? 千尋さんこれからもがんばってください。

    返信削除
  4. コメントありがとうございます^^
    結局ネットなどの情報が無かったらLSLはもちろん、スカルプテッドプリムもアニメーションもさっぱりわからなくて困っちゃうと思うんですね。
    そういう色々な情報を提供してくれる人がいたから、今の自分があるって感じです。
    でも、ものづくり出来るようになってお店を経営するようになった人の中には、そういうことを忘れて、もう自分の利益だけしか頭にない人がいるみたいでとても残念ですね。。。;;
    私はボランティアの人達とかみたいにSLに貢献できないですけど、ちょっとでも人の役に立てたらいいなって感じでやってます^^; ご声援ありがとうございます^^

    返信削除
  5. さらに上を行くソフトウェア開発すればいいだけ。 GNUの概念で言えば、情報や技術の共有がソフトウェア業界を向上させるとされています。

    返信削除
  6. WIKIを見れば誰でも作れる時代になったので、きちんとした設計思想を持ち、クライアントから信頼されるIT屋さんを目指して頑張るしかないんじゃないの?

    返信削除
  7. コメントありがとうございます。
    そうですね。信頼されるようになれたらいいですよね。
    私は最近あまりSLしてないので、頑張るって言葉はちょっと耳痛いですが^^; 返答も遅くてすみません><

    返信削除