2007年11月10日
ダンスボール(リンデンスクリプト Tips)
クラブ等に良くあるダンスボールスクリプトを作ってみました。 ボールをタッチするとコンテンツの中にあるアニメーションをダイアログ表示し、 選んだアニメーションを実行します。 ダンスをストップするときは、ダイアログ右上の"STOP"ボタンを押します。 アニメーションは、ボールにドラッグするだけでOKです。
<スクリプト内容>
//
// DanceBall script v1.1
//
// Created by Zero2000 Kid 2007/11/10
// 2007/12/08(modified)
//
list list_anim;
string anim;
integer handle;
getAminlist() {
list_anim=[];
integer i;
integer animct = llGetInventoryNumber(INVENTORY_ANIMATION);
for (i = 0; i < animct; i++) {
if (i<11) list_anim+=llGetInventoryName(INVENTORY_ANIMATION,i);
}
list_anim+="STOP";
}
stopAnimation() {
list anims = llGetAnimationList(llGetPermissionsKey());
integer aminct = llGetListLength(anims);
integer i;
for (i = 0; i < aminct; i++){
llStopAnimation(llList2Key(anims, i));
}
// add 2007/12/8 -->
llStartAnimation("stand");
// <--
}
startAnimation() {
stopAnimation();
if (anim!="STOP") {
llStartAnimation(anim);
}
}
default {
state_entry() {
llSetText("Let's Dance\nClick Me!",<1,1,1>, 1.0);
getAminlist();
}
on_rez(integer int) {
llResetScript();
}
changed(integer change){
if (change & CHANGED_INVENTORY){
getAminlist();
}
}
touch_start(integer t) {
handle = llListen(-1,"", "","");
llDialog(llDetectedKey(0), "PLEASE SELECT DANCE", list_anim, -1);
}
listen(integer ch, string name, key id, string message) {
anim=message;
if ((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION)
&& llGetPermissionsKey() == id) {
startAnimation();
} else {
llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION);
}
llListenRemove(handle);
}
run_time_permissions(integer perm){
if(perm & PERMISSION_TRIGGER_ANIMATION){
startAnimation();
}
}
}
<スクリプトの説明>
1. アニメーションをコンテンツにドラッグするとchangedイベントが発生し、そのタイミングでアニメー
ションの名前を取得し、リストに格納します。
2. ボールをタッチするとllListenコマンドでリッスンモードをスタートし、llDialogで、アニメのリストを
ダイアログ表示します。
3. アニメを選択するとリッスンイベントが発生し、llRequestPermissionsでパーミションを取得した後、
アニメーションをスタートします。
ええwかなり説明省いてます・・・いいのかこんなんでw
ちょっと時間ないのでこの辺でw
リンデンスクリプト Tips Intexへ
この記事へのトラックバックURL
この記事へのコメント
はじめまして、スクリプト使わせてもらっています。
難しくって自分の力ではどうにもなりません。
少しは勉強してるつもしですが、なかなか。
以前からダンスボールがほしかったので、コピーさせてもらいました。
でも、ダンスがとまらないんです。
タイニーのダンスだからでしょうか?
ボールの上に座って立ち上がる、という方法でSTOPせているのですが、
アドバイスいたっだけるとうれしいです。
よろしくお願いします。
難しくって自分の力ではどうにもなりません。
少しは勉強してるつもしですが、なかなか。
以前からダンスボールがほしかったので、コピーさせてもらいました。
でも、ダンスがとまらないんです。
タイニーのダンスだからでしょうか?
ボールの上に座って立ち上がる、という方法でSTOPせているのですが、
アドバイスいたっだけるとうれしいです。
よろしくお願いします。
Posted by ロンちゃん
at 2007年12月04日 13:06
at 2007年12月04日 13:06ロンさんへ
はじめましてZEROです^^
ダイアログメニューの"STOP"を押しても止まらないと
いうことでしょうか?STOPボタンを押して、少し動くと
止まるはずなんですが。
はじめましてZEROです^^
ダイアログメニューの"STOP"を押しても止まらないと
いうことでしょうか?STOPボタンを押して、少し動くと
止まるはずなんですが。
Posted by ZERO
at 2007年12月05日 01:40
at 2007年12月05日 01:40止まりました。
動かないといけないんですよね。
クリックして止まらないから、何回も押したりして。
ありがとうございました。
ほかの、スクリプトも使わせてもらいました。
SLで、また会えてらうれしいです。
動かないといけないんですよね。
クリックして止まらないから、何回も押したりして。
ありがとうございました。
ほかの、スクリプトも使わせてもらいました。
SLで、また会えてらうれしいです。
Posted by ロンちゃん at 2007年12月07日 16:30
ロンさんへ
動かないと止まらない件ですが、私もちょっと気になったので調べてみました。llStopAnimationを発行すると、内部的にはアニメーションは実行していない状態になります。しかし、画面上は動きっぱなしですwこれは仕様なのかバグなのかよく分かりません^^;おそらく実行中のアニメーションが無の場合、以前実行していたアニメを継続するようです。
通常アバターは、普通に立っている状態(止まっている状態)でも実は内部的には、standというアニメーションを実行ています。実行中のアニメーションが何もない状態の場合、なんらかのアクションをトリガーとしてこのstandが自動的に実行されるようです。少し動くと止まるのは、このstandというアニメーションが実行された結果です。ですのでSTOPボタンを押して、すぐに止まった状態にするにはこのstandというアニメーションを実行してあげればOkのようです。スクリプトにこの処理を追加しましたのでお試しください^^
動かないと止まらない件ですが、私もちょっと気になったので調べてみました。llStopAnimationを発行すると、内部的にはアニメーションは実行していない状態になります。しかし、画面上は動きっぱなしですwこれは仕様なのかバグなのかよく分かりません^^;おそらく実行中のアニメーションが無の場合、以前実行していたアニメを継続するようです。
通常アバターは、普通に立っている状態(止まっている状態)でも実は内部的には、standというアニメーションを実行ています。実行中のアニメーションが何もない状態の場合、なんらかのアクションをトリガーとしてこのstandが自動的に実行されるようです。少し動くと止まるのは、このstandというアニメーションが実行された結果です。ですのでSTOPボタンを押して、すぐに止まった状態にするにはこのstandというアニメーションを実行してあげればOkのようです。スクリプトにこの処理を追加しましたのでお試しください^^
Posted by ZERO
at 2007年12月08日 22:56
at 2007年12月08日 22:56


