2011年01月01日

ダイアログからサウンドを選択

はじめての投稿です。

ダイアログからサウンド名(日本語)を選択で、音を出したいのですが
ここで似たような記事をみましたが、さっぱりわかりません・゚・(つД`)・゚・
いろいろ検索もしてみたのですが
どうしてもllDialogとllPreloadSoundの組み合わせ方がわかりません・・・。
どなたかお力を貸していただけませんか><;



同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジのHUDについて (2015-07-01 04:51)
 モール用のプリムカウンターを探しています (2014-11-29 20:09)
 連続するアニメーションの処理 (2014-08-24 03:23)
 オブジェクトの上にフローティングテキストを出す。 (2014-08-22 16:46)
 チャットログの盗聴について (2014-02-03 03:43)
 椅子に座った後で位置調整できるスクリプト (2013-03-24 16:37)

Posted by spider  at 20:16 │Comments(10)スクリプト関連

この記事へのコメント
llPreloadSoundはサウンドを再生するのもではありません。
サウンドの遅延対策の関数です。

llPlaySoundやllLoopSoundなどの関数を 調べてみては?
Posted by 匿名 at 2011年01月01日 21:48
すみません 書き間違いです・゚・(つД`)・゚・
llPlaySoundで調べてみてわからなかったんです><
Posted by spiderspider at 2011年01月02日 11:11
まずllDialogで選ばれた結果は、llSayと同様な結果で帰ってくるため、
listenイベントハンドラで聞く必要があります。

ですので、llListenで聞く準備をしておき、ダイアログの結果が聞こえてきたら、listenイベントハンドラ内でllPlaySoundを実行すればいいかと思います。
Posted by しゅん at 2011年01月02日 16:54
ちょっと挙動は違いますが・・こちらのブログを参考にしてみてはいかがでしょうか。http://zero2000.slmame.com/e795945.html
Posted by m at 2011年01月03日 02:09
しゅん様>

レスありがとうございます><
↓のようにやってみました。

list Sounds =
[
"sound1", "sound2","sound3"
];
integer Handle;

default
{
touch_start(integer total_number)
{
Handle = llListen(123, "", "", "");
llDialog(llDetectedKey(0), "Select one Sound", Sounds, 123);
}
listen(integer channel, string name, key id, string message)
{
if(message == "sound1")
{
llPlaySound("sound1",1.0);
}
else if(message == "sound2")
{
llPlaySound("Sound name2",1.0);
}
else if(message == "sound3")
{
llPlaySound("Sound name3",1.0);
}
llListenRemove(Handle);
}
}

これで、ダイアログは出るようになったのですが
ボタンを日本語で表示させる方法がわかりません><;



m様>
私もそちらのブログは拝見していたのですが
どうしてもわかりませんでした・゚・(つД`)・゚・
Posted by spiderspider at 2011年01月03日 10:46
もうひとつリストを作ったほうがスマートなやり方かもしれませんが、list soundの中の名前と、if文の中の名前を日本語にするだけで表示されると思います。
Posted by m at 2011年01月03日 12:23
m様>

私もやってみたんですが
list soundの中の名前と、if文の中の名前を日本語にすると
スクリプトエラーが出てしまいます・゚・(つД`)・゚・
英語名だと平気なんですが・・・

もうひとつリストを作るというのは、ノートカードを読み込んだりでしょうか?
Posted by spiderspider at 2011年01月03日 16:40
日本語にする時に”が抜けてませんか?
"サウンド1"などでエラーは出ないと思います。
mさんのアドバイス通りでできますよ

抜粋
list Sounds =
[
"サウンド1", "サウンド2","サウンド3"
];

if(message == "サウンド1")
{
llPlaySound("sound1",1.0);
}

ここからは余談かもですけど
サウンド(sound1)をスクリプトと一緒にオブジェクトに突っ込んでますか?
又はストリーミングラジオ作ろうとしてるんですかね?
Posted by 匿名 at 2011年01月03日 22:45
日本語でいけましたー><
文字数が多かっただけみたいです・・・
ありがとうございました!
Posted by spiderspider at 2011年01月04日 18:58
毎度ども

listenイベントハンドラ内ですが、if文でかなりややこしくなってますが、
このif文はいらないのでは?
下記コードで動きましたよ

list Sounds =
[
"sound1", "sound2","sound3"
];
integer Handle;

default
{
touch_start(integer total_number)
{
Handle = llListen(123, "", "", "");
llDialog(llDetectedKey(0), "Select one Sound", Sounds, 123);
}
listen(integer channel, string name, key id, string message)
{
llPlaySound(message,1.0);
llListenRemove(Handle);
}
}
Posted by しゅん at 2011年01月05日 06:38
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。