2008年03月02日
walking のスクリプティング講座3(その3)
次 時間版 行ってみよ~
この辺は変わらない(あ 要らないものが入っているような気がするが 気にしないように w)
この辺は ノートカードからアニメーションの名前を読み込むんじゃなくて 同じフォルダにあるアニメーションの名前を読み込むようにしている
まあ この辺も定式みたいなもんだから そのまま使えばいいだけ w
llGetInventoryNumber(INVENTORY_ANIMATION) をすると アニメーションの個数が取れるから
llGetInventoryName(INVENTORY_ANIMATION, i) を i を 0 から その数 - 1 まで変えながら起動すると それらの名前が取り出せるというわけ
で llListInsertList(dance_list, [nm], llGetListLength(dance_list)) みたいなことをすると nm が dance_list の最後に追加されていく
で それが終わったら animation を起動する
animation はリスト版と殆ど変わらない
ただ timer を起動する時間間隔が 10秒
つまり そのタイミングで アニメーションを切り替えてやるわけだね
だから 10秒に足りないアニメーションの場合は 次のアニメーションを待つことになるし 10秒を超えるアニメーションの場合は途中で切られることになってしまう
でも 案外使えなくもないんだ あはは
この辺はリスト版と同じだから説明はスルー w
で timer の処理だけど 起動したアニメーションを停止して 次のアニメーションを起動する というわけ...
簡単だが これで 終わり w
//
// File: dance_ring_10s.lsl
// Date Author number of nodes
// 2007/10/6 walkinglint 52
// 2007/10/6 walkinglint 84 (dance_ring->dance_ring_10s)
// 2007/9/11 walkinglint 83
// 2007/9/10 walkinglint 82
//
// http://mina.slmame.com/e3291.html
// http://miz.slmame.com/e2400.html
key av_id;
integer read_line;
key query_id;
list dance_list = [];
integer i;
integer num_of_dances;
string nm;
integer dance_num = 0;
string dance_name;
list animation_list;
この辺は変わらない(あ 要らないものが入っているような気がするが 気にしないように w)
activate_load_and_animation() {
num_of_dances = llGetInventoryNumber(INVENTORY_ANIMATION);
for (i = 0; i < num_of_dances; i++) {
nm = llGetInventoryName(INVENTORY_ANIMATION, i);
dance_list = llListInsertList(dance_list, [nm], llGetListLength(dance_list));
}
animation();
}
この辺は ノートカードからアニメーションの名前を読み込むんじゃなくて 同じフォルダにあるアニメーションの名前を読み込むようにしている
まあ この辺も定式みたいなもんだから そのまま使えばいいだけ w
llGetInventoryNumber(INVENTORY_ANIMATION) をすると アニメーションの個数が取れるから
llGetInventoryName(INVENTORY_ANIMATION, i) を i を 0 から その数 - 1 まで変えながら起動すると それらの名前が取り出せるというわけ
で llListInsertList(dance_list, [nm], llGetListLength(dance_list)) みたいなことをすると nm が dance_list の最後に追加されていく
で それが終わったら animation を起動する
animation() {
dance_num = 0;
dance_name = llList2String(dance_list, dance_num);
llStartAnimation(dance_name);
llSetTimerEvent(10.0);
}
animation はリスト版と殆ど変わらない
ただ timer を起動する時間間隔が 10秒
つまり そのタイミングで アニメーションを切り替えてやるわけだね
だから 10秒に足りないアニメーションの場合は 次のアニメーションを待つことになるし 10秒を超えるアニメーションの場合は途中で切られることになってしまう
でも 案外使えなくもないんだ あはは
default {
on_rez(integer start_param) {
llSetTimerEvent(0.0);
}
attach(key avid) {
if (avid != NULL_KEY) {
llSetTimerEvent(0.0);
av_id = avid;
integer perm = llGetPermissions();
if ((perm & PERMISSION_TRIGGER_ANIMATION) == 0) {
llRequestPermissions(avid, PERMISSION_TRIGGER_ANIMATION);
} else {
activate_load_and_animation();
}
} else if (llStringLength(dance_name) != 0) {
llStopAnimation(dance_name);
}
}
run_time_permissions(integer perm) {
if (perm & PERMISSION_TRIGGER_ANIMATION) {
activate_load_and_animation();
}
}
この辺はリスト版と同じだから説明はスルー w
timer() {
llStopAnimation(dance_name);
dance_num++;
if (dance_num == llGetListLength(dance_list)) {
dance_num = 0;
}
dance_name = llList2String(dance_list, dance_num);
llStartAnimation(dance_name);
}
}
で timer の処理だけど 起動したアニメーションを停止して 次のアニメーションを起動する というわけ...
簡単だが これで 終わり w
Posted by walkinglint at 21:03│Comments(0)
│walking のスクリプティング講座