ソラマメブログ

2008年02月09日

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

流石に今回で New Script は終わるぞ ^^

llSetTimerEvent(1.0); としているので 1秒毎に実行される部分
    timer()
{
integer max_count = 0;
while ((cur_duration = update_cur_seq_and_get_duration()) == 0.0) {
get_record();
llMessageLinked(cur_src_link, cur_hight, cur_operation, llGetLinkKey(cur_target_link));
// llOwnerSay(cur_operation + " " + (string)cur_src_link);
if (++max_count > num_of_sequence) {
llSetTimerEvent(0.0);
return;
}
}
get_record();
if (cur_target_link == 0) {
llMessageLinked(cur_src_link, cur_hight, cur_operation, NULL_KEY);
} else {
llMessageLinked(cur_src_link, cur_hight, cur_operation, llGetLinkKey(cur_target_link));
}
// llOwnerSay(cur_operation + " " + (string)cur_src_link);
llSetTimerEvent(cur_duration);
}
}

update_cur_seq_and_get_duration というのを呼び出している... あれ? 一秒毎に呼び出していいの?

というわけだが この関数の最後の部分を見ていただくと

llSetTimerEvent(cur_duration);

となっている なるほど~ 持続時間後に呼び出すように再設定してるわけね ^^

で~ さらに 最初の while 文 が 結構嫌らしい部分なんだけど~ 持続時間が 0 な場合は ここをくるくる回るんだ

で 持続時間が 0 のまま データの個数を超えた場合は llSetTimerEvent(0.0); で終了する

そのままの設定で変化が無いパターンはこの道筋を辿るというわけなんだね~

でもまあ ここで get_record でデータを取り出して llMessageLinked で指示を出すわけだ

というわけで 次回からは 指示を出された側の処理を見ていくよ w

あ llGetLinkKey(cur_target_link) とかしているのは 渡せるもののタイプが決まってるので変換してるってわけ...

(続く)

タグ :スクリプト

同じカテゴリー(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)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。