ソラマメブログ

2008年02月09日

walking のスクリプティング講座(その9)

さてさて 次~
    touch(integer total_number) 
{
touched = TRUE;
llDialog(llDetectedKey(0), "Select pattern", pattern_list, 123);
}

タッチされたら タッチされたというフラグを立てて

ダイアログを開く... ダイアログの上に表示する文字列と ボタンの文字列 と 結果を返すチャネルの番号を指定している...

llDetectedKey(0) っていうのはタッチしたアバターの ID だけどこのスクリプトでは使ってないじょ っていうか タッチしたアバターにダイアログを表示してるわけね ^^;
     listen(integer channel, string name, key id, string message) {

// llOwnerSay("here we are " + message);

if (touched == FALSE) {
return;
}

touched = FALSE;

llListen(123, "", "", "");

if (message == "0") {
set_default_colors();
sequence = sequence0;
} else if (message == "1") {
set_default_colors();
sequence = sequence1;
} else if (message == "2") {
set_default_colors();
sequence = sequence2;
} else if (message == "3") {
set_default_colors();
sequence = sequence3;
} else if (message == "4") {
set_default_colors();
sequence = sequence4;
} else if (message == "5") {
set_default_colors();
sequence = sequence5;
} else if (message == "6") {
set_default_colors();
sequence = sequence6_1 + sequence6_2 + sequence6_3 + sequence6_4 + sequence6_5 + sequence6_6
              + sequence6_7 + sequence6_8 + sequence6_9 + sequence6_10; // num of initializers is limited in LSL
} else if (message == "7") {
set_default_colors();
sequence = sequence7_1 + sequence7_2 + sequence7_3 + sequence7_4 + sequence7_5 + sequence7_6; // why error ?
} else if (message == "8") {
set_default_colors();
sequence = sequence8_1 + sequence8_2 + sequence8_2_2 + sequence8_3 + sequence8_3_2
              + sequence8_4 + sequence8_5 + sequence8_5_2 + sequence8_6 + sequence8_6_2;
} else { // add process for added sequence #3
// do not comes here
}

// if (sequence != prev_sequence) {
num_of_sequence = llGetListLength(sequence) / num_of_record;
cur_seq_num = 0;
stop_fountain();
llSetTimerEvent(1.0);
// llOwnerSay(message + " is selected");
// prev_sequence = sequence;
// }
}

llListen(123, "", "", ""); っていうのを最初にしていたから ダイアログでの処理が終わると ここに処理が飛んでくる

touch されて飛んできたときだけ 処理するようにしてる これで 他の噴水のダイアログの処理は無視している けれど 本当はハンドラ使うんだよ ^^

で 次も listen するように llListen(123, "", "", ""); としている けど必要だったかな w

クリックされた文字列が message という所に入れられているので それにしたがって sequence を設定するんだ

設定されたら それでデータを設定する... あ そうそう 新しいパターンを追加したらここに同じように sequence 設定処理を追加する必要があるんだ

(続く)

タグ :スクリプト

同じカテゴリー(walking のスクリプティング講座)の記事
 プロフィール写真の表示に問題 (2009-11-30 20:55)
 ミニ太陽系 (2009-03-21 06:03)
 関数から文字列を返したら何か問題になる? (2009-03-18 18:02)
 llListFindList って型って関係ないんだったっけ (2009-03-18 14:02)
 夏時間(PDT)の実験 (2009-03-08 22:04)
 15パズルの作り方(その3) (2009-03-08 06:03)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。