2014年8月19日火曜日

[ゲーム:セカンドライフ]コミュニケーションは繋がりじゃんよ。の話。

https://plus.google.com/118048162701737973796/posts/WAqYtwCgubu
発端はこの提案です。何時ものとりあえず言うてみたってやつですね。
要は情報を共有出来る為の切欠として、インワールドに看板設置してG+の宣伝しようぜ?です。

その後、
http://suzume4.blogspot.jp/2014/08/gcommunication.html
にて、suzumeさんがどうせ店に置くならーと言うことなのかな。店の宣伝機能をくっつけた物にしていたのでコメで修正してみてはとしたのですが、こんな修正は付け焼刃のスパベッティーミートソース地中海風、潮風に乗せて。なので、そんなら使い易い様に大幅に書き直してみてしまおうと書いてみました。

以下がそのスクリプトとなります。
スクリプト内のインデントは気になるようなら個々で行ってください。

これを丸々コピーした上で看板に入れ、必要に応じノートカード、LM,オブジェを入れればOKです。
看板及びテクスチャーは自前の物などで用意してください。

使用制限ですが特にありません。コミュニティーの宣伝と発展に活用してくだされば幸いです。
その分このスクリプトを使って問題がーとか言われても責任は取りませんけど。

このスクリプトはインワールドでのチェックは一切していないのでミス等があったらコメントにてお願いします。
また要望等も同様で。



----------------------ヤ-マ-オ-リ-------------------------

/*

1、看板オブジェにはノートカードを一つ入れてください。
 これが「お知らせ」として渡されます。
 一つ以上入れている場合は名前順で最初の物が渡されます。
 一つも入れていない場合は渡されません。

 このノートは「お知らせ」なる為、お店のお知らせ用ノートの配布などに使ってください。
 またこの看板自体の解説も書いてあると良いかと思います。


2、看板オブジェにはLMを一つ入れてください。
 これが「LM」として渡されます。
 一つ以上入れている場合は名前順で最初の物が渡されます。
 一つも入れていない場合は渡されません。

 このLMはお店の宣伝向けにLM配る用等にお使いください。


3、看板にはオブジェを一つ入れてください。
 これが「配布物」として渡されます。
 一つ以上入れている場合は名前順で最初の物が渡されます。
 一つも入れていない場合は渡されません。

 普通にギフト配布用として使って良いと思いますが出来ればこの看板自体と同じ物入れてください。
 
 看板再配布の場合、その看板の中にはLMや配布用看板は入れずに置いてください。
 そして受け取った人向けにLMや看板乃至ギフトを入れる事などの取説を一緒にした箱で配布してください。
 
 取説にはノート、LM、配布物を一個入れるなどといった、ここで書かれている物を元に書いてください。


4、ダイアログのボタンの名前
 判り易い様に変えてもらっても構いません。
 その場合buttonX_strsのところの文字列を書き換えてください。
 ただ名前を変えても行える処理が変わらないので、順番を入れ替える等すると困ったことになり、
 listen内も変える事になる為スクリプトが判る人向けとなってしまいます。

5、ダイアログに表示されるメッセージについて。
 判り易い様に変えてもらって構いません。
*/



string dialodText_strs = "\n G+コミュニケーション";// ダイアログに表示するメッセージ

string button0_strs = "お知らせ";

string button1_strs = "LM";

string button2_strs = "閉じる";

string button3_strs = "SLJPへGO";
    string url3_strs = "https://plus.google.com/communities/112321485512926483150";

string button4_strs = "SL CM G+へGO";
    string url4_strs = "https://plus.google.com/communities/110671097607312573594";

string button5_strs = "G+の使い方";
    string url5_strs = "https://sites.google.com/site/howtousegplus/home";

string button6_strs = "配布物";

key avatar_keys;
list dialogMenu_list=[
button0_strs,button1_strs,button2_strs,
button3_strs,button4_strs,button5_strs,
button6_strs
];
integer channel_ints;
integer listenhandle_ints;

string null_strs = "";
string subs_strs = "";

RemoveListen_meth(){
    llSetTimerEvent(0.0);llListenRemove(listenhandle_ints);
}

default{
    state_entry(){
        llSetMemoryLimit(16000);
    }

    timer(){
        RemoveListen_meth();
    }//timer

    listen(integer _i, string _n, key _k, string _s){
        if (_i == channel_ints){
            if(_k == avatar_keys){
                RemoveListen_meth();
                if (_s == button0_strs) {    // button0が押されたとき
                    subs_strs = llGetInventoryName(INVENTORY_NOTECARD,0);
                    if(subs_strs != null_strs)llGiveInventory(_k,subs_strs);//ノートを渡す
                }else if(_s == button1_strs){
                    subs_strs = llGetInventoryName(INVENTORY_LANDMARK,0);
                    if(subs_strs != null_strs)llGiveInventory(_k,subs_strs);//LMを渡す
                //}else if(_s == button2_strs){ // button2が押されたとき
                    //閉じる 処理の必要が無い為コメントアウト
                }else if(_s == button3_strs){ // button3が押されたとき
                    llLoadURL(_k,button3_strs,url3_strs);// webページを開く
                }else if(_s == button4_strs){ // button4が押されたとき
                    llLoadURL(_k,button4_strs,url4_strs);// webページを開く
                }else if(_s == button5_strs){ // button5が押されたとき
                    llLoadURL(_k,button5_strs,url5_strs);// webページを開く
                }else if(_s == button6_strs){ // button6が押されたとき
                    subs_strs = llGetInventoryName(INVENTORY_OBJECT,0);
                    if(subs_strs != null_strs)llGiveInventory(_k,subs_strs);//オブジェを渡す
                }
            }
        }
    }

    touch_start(integer _i){
        avatar_keys = llDetectedKey(0);

        RemoveListen_meth();
        channel_ints = (integer)( llFrand(1000.0) ) - 10000;// チャンネルを乱数で設定
        listenhandle_ints = llListen(channel_ints,null_strs,avatar_keys,null_strs);

        llDialog(avatar_keys,dialodText_strs,dialogMenu_list,channel_ints); // ダイアログを出す

        llSetTimerEvent(60.0f);// リッスン破棄用タイマー60秒
    }
}

----------------------タ-ニ-オ-リ-------------------------


0 件のコメント:

コメントを投稿