2008年02月09日
walking のスクリプティング講座(その9)
さてさて 次~
タッチされたら タッチされたというフラグを立てて
ダイアログを開く... ダイアログの上に表示する文字列と ボタンの文字列 と 結果を返すチャネルの番号を指定している...
llDetectedKey(0) っていうのはタッチしたアバターの ID だけどこのスクリプトでは使ってないじょ っていうか タッチしたアバターにダイアログを表示してるわけね ^^;
llListen(123, "", "", ""); っていうのを最初にしていたから ダイアログでの処理が終わると ここに処理が飛んでくる
touch されて飛んできたときだけ 処理するようにしてる これで 他の噴水のダイアログの処理は無視している けれど 本当はハンドラ使うんだよ ^^
で 次も listen するように llListen(123, "", "", ""); としている けど必要だったかな w
クリックされた文字列が message という所に入れられているので それにしたがって sequence を設定するんだ
設定されたら それでデータを設定する... あ そうそう 新しいパターンを追加したらここに同じように sequence 設定処理を追加する必要があるんだ
(続く)
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 設定処理を追加する必要があるんだ
(続く)
Posted by walkinglint at 15:45│Comments(0)
│walking のスクリプティング講座