Site search

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

2008年9月16日火曜日

ミュージックチェンジャーのスクリプト

今回は土地の音楽を切り替えるミュージックチェンジャーのスクリプトです^^

土地に音楽を設定して流すには、その土地を持ってるとか権限が必要なんですが、llSetParcelMusicURLの関数で簡単にできます。
これで音楽やネットラジオとかのストリーミング配信を土地に設定したらビューワーの再生ボタンで聞けるようになります^^


ストリーミング配信されてる音楽を曲リストのところに入れてくださいね^^
オーナーがタッチするとダイアログ出て、選んだ曲が土地に設定されます。
// ミュージックチェンジャー
list music=[  // 曲リスト
// "曲名", "URL",
"ピアノ曲","ピアノ曲のURL",
"ユーロビート","ユーロビートURL",
"○×ラジオステーション","○×ラジオステーションURL",
NULL_KEY];  // データの最後のカンマ用
integer len;
string text;  // ダイアログのメッセージ用
list num;  // ボタン用
integer listen_handle;
integer CHANNEL;

default
{
    state_entry()
    {
        len=llGetListLength(music)-1; // NULLキー省いた曲リストの長さ
        string str;
        integer i;
        for (i=0; i < len; i+=2) {  // ダイアログのテキストとボタンを準備しとく
            str=(string)(i/2+1);  // 番号を計算して文字列にする
            text+=str+". ";  // 曲に振る番号と点
            text+=llList2String(music,i);  // 曲名
            text+="\n";  // 改行
            num+=[str];  // ボタン用の番号
        }
    }

    touch_start(integer total_number)
    {
        key agent=llDetectedKey(0);  // タッチしたアバターのキー
        if (agent != llGetOwner()) return;  // オーナーでないときは中断
        llListenRemove(listen_handle);  // listen解除
        CHANNEL=llCeil(llFrand(2147483646));  // listenチャンネルのランダム化
        listen_handle=llListen(CHANNEL, "", agent, "");  // listen開始
        llDialog(agent, text, num, CHANNEL);  // ダイアログ表示
    }

    listen(integer channel, string name, key id, string msg)
    {
        llListenRemove(listen_handle);  // listen解除
        if (channel == CHANNEL && id == llGetOwner()) {
            integer i=(integer)msg;  // 押されたボタンの整数値
            string url=llList2String(music,i*2-1);  // 曲リストから対応するURLを取り出す
            llSetParcelMusicURL(url);  // 土地にミュージックURL設定
        }
    }
}

最大12曲まで登録できますが、曲名が長くなりすぎて制限を越えるとエラーでダイアログでなくなります^^;
http://beta.slmame.com/e359278.html

0 件のコメント:

コメントを投稿