2008年09月24日
アニメ再生スクリプト2 (装着→アニメ)
えと、前回書いたコピペ用のスクリプトのブログは、思いの外 反響がよかったみたいでして
調子に乗って第2弾いっちゃいますね!!
今回は「装着したらアニメを再生する」 スクリプトです。
これまた、SL内でもあちこちで使われているスクリプトですね^^
あちこちでフリーで出回っていると思いますけど、必要な方はどうぞコピペして使ってくださいね
【使用例】
これは、前回のヤツ以上にいろんなところで使われてますよねぇ~~^^
【使用方法】
(手順1) 装着するオブジェクトを作成する。装着場所や装着する位置・角度なども先に調整しておいた方が
(手順1) 装着するオブジェクトを作成する。装着場所や装着する位置・角度なども先に調整しておいた方が
楽だと思いますよ。
(手順2) デフォルトのアニメ以外を用いる場合は、各自で用意したアニメをオブジェクトのコンテンツに入れる。
(アニメの入れ方)
右クリック→編集→コンテンツ→持ち物の中からドラッグ
(手順3) コンテンツの中に下記のスクリプトを入れる。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→数値等の設定→保存→Save completeと表示されればOK
(アニメの入れ方)
右クリック→編集→コンテンツ→持ち物の中からドラッグ
(手順3) コンテンツの中に下記のスクリプトを入れる。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→数値等の設定→保存→Save completeと表示されればOK
(手順4) オブジェクトを装着したまま(手順3)を行った場合は、一度取り外してから、もう一度装着し直してください。
//////////////////////////////以下、コピペしてお使いください/////////////////////////////////////////
string animation = "dead" ; // ①アニメの名前
default {
attach ( key id ) {
if ( id == NULL_KEY ) {
llStopAnimation( animation ) ;
string init ;
if ( llGetAgentInfo(llGetOwner()) & AGENT_ON_OBJECT ) {
init = "sit" ;
}
else {
llRequestPermissions(id , PERMISSION_TRIGGER_ANIMATION ) ;
}
}
run_time_permissions( integer permissions ) {
if ( permissions & PERMISSION_TRIGGER_ANIMATION ) {
list playing_animations = llGetAnimationList( llGetPermissionsKey() ) ;
integer num = llGetListLength( playing_animations ) ;
integer i ;
for ( i = 0 ; i < num ; i++ ) {
llStopAnimation( llList2Key( playing_animations , i ) ) ;
}
llStartAnimation( animation ) ;
}
}
}
//////////////////////////////おしまいです(^_^)v///////////////////////////////////////////////////
【設定項目】
①アニメの名前
" " の中に、スペースの有無や、大文字・小文字の区別などに注意して、再生したいアニメの名前を
書き込んでください。詳しくは、 前回の記事を参考にしてください。
else {
init = "stand" ;
}
llStartAnimation( init ) ;
}else {
llRequestPermissions(id , PERMISSION_TRIGGER_ANIMATION ) ;
}
}
run_time_permissions( integer permissions ) {
if ( permissions & PERMISSION_TRIGGER_ANIMATION ) {
list playing_animations = llGetAnimationList( llGetPermissionsKey() ) ;
integer num = llGetListLength( playing_animations ) ;
integer i ;
for ( i = 0 ; i < num ; i++ ) {
llStopAnimation( llList2Key( playing_animations , i ) ) ;
}
llStartAnimation( animation ) ;
}
}
}
【設定項目】
①アニメの名前
" " の中に、スペースの有無や、大文字・小文字の区別などに注意して、再生したいアニメの名前を
書き込んでください。詳しくは、 前回の記事を参考にしてください。
今回の設定項目は、この一カ所だけです。
注意・・・アニメの優先度の関係上、AOを外さないと うまくアニメが再生されない場合があります。
とまぁ、今回はこれだけです
う~~ん、こっちを第1弾にすればよかったですね^^;; 設定は簡単だし、応用範囲は広いし。
しかも、装着するのでプリム数を気にしなくてもいいし、自分の土地を持ってなくても使えるし
第3弾があるかは謎ですけど、何か質問等がございましたら、Fujiko Miklos宛にご連絡くださいm(_ _)m
ではでは~~~
2008年09月12日
アニメ再生スクリプト1 (座る→アニメ)
おかげさまで最近では、 「ふじこちゃ~~ん、こんなスクリプト持ってない???」 って感じで、
スクリプト関係で いろいろな方のお役に立てるようになってきました
で、皆さんに使っていただいているスクリプトの中でも使い勝手が良さそうなものを、
ここのブログに載せていこうかなと思いまして^^
えと、第1弾として、 「座ったらアニメを再生する」 スクリプトです。
まぁ、何をいまさら・・・・??的なモノですけどね^^;;
下のSSで代表的な使用例をいくつかあげておきましたけど、SL内でもあちこちで使われているスクリプトなので、
ネットで探したら普通に転がっているでしょうし、フリーのものがいっぱい出回っていると思いますけど・・・・
まぁ、必要な方は どぞどぞ ご自由にコピペしてお使いくださいね
【使用例】
あちこちで勝手にSS撮ってます^^;;スミマセン
いやぁ~~ 楽しかった楽しかった これがやりたかっただけ??
スミマセン(>_<) ここからはマジメにやりますね
【使用方法】
(手順1) 椅子やポーズボールなど、目的のオブジェクトを作る。
(手順2) 必要があれば、自分で用意したアニメをオブジェクトのコンテンツの中に入れる。
(アニメの入れ方)
右クリック→編集→コンテンツ→持ち物の中からドラッグ
(手順3) コンテンツの中に下記のスクリプトを入れる。数値等の設定はお好みに書き換えてください。
(スクリプトの入れ方)
右クリック→編集→コンテンツ→新しいスクリプト→右クリックで開く→下のスクリプトをコピペ
→数値等の設定→保存→Save completeと表示されればOK
注意・・・座ったままの状態だと、設定の変更が反映されません。座る位置・角度などの設定を変更する度に
一度立ち上がってから座り直してください。
//////////////////////////////以下、コピペしてお使いください/////////////////////////////////////////
string animation = "sleep" ; // ①アニメの名前
vector sit_position = <0.0 , 0.0 , 1.0> ; // ②座る位置
vector sit_rotation = <0.0 , 0.0 , 0.0> ; // ③座る角度
integer disappear = 1 ; // ④透明化
key sit_avatar = NULL_KEY ;
default{
state_entry(){
string text = "Sit Here" ; // ⑤パイメニューの表示文字
llSetSitText(text) ;
llSitTarget(sit_position, llEuler2Rot(sit_rotation*PI/180)) ;
llSetAlpha(1 , ALL_SIDES) ;
}
changed(integer change){
if (change&CHANGED_LINK){
key check_avatar = llAvatarOnSitTarget();
if (sit_avatar != NULL_KEY && check_avatar == NULL_KEY){
sit_avatar = NULL_KEY;
llStopAnimation(animation);
llStartAnimation("stand");
if(disappear == 1){
llSetAlpha(1 , ALL_SIDES);
}
}
else if(sit_avatar == NULL_KEY && check_avatar != NULL_KEY){
sit_avatar = check_avatar;
if(disappear == 1){
llSetAlpha(0 , ALL_SIDES);
}
llRequestPermissions(sit_avatar , PERMISSION_TRIGGER_ANIMATION);
}
}
}
run_time_permissions(integer permissions){
key permission_avatar=llGetPermissionsKey();
if (permission_avatar==sit_avatar && (permissions & PERMISSION_TRIGGER_ANIMATION)){
list playing_animations = llGetAnimationList(sit_avatar);
integer i;
integer length = llGetListLength(playing_animations);
for (i =0 ; i <length ; i++){
llStopAnimation(llList2Key(playing_animations, i));
}
llStartAnimation(animation);
}
}
}
//////////////////////////////おしまいです(^_^)v///////////////////////////////////////////////////
【設定項目】
設定する必要があるのは、①~⑤の5項目です。赤い部分を変更してください。
スクリプト中の青い文字は、以下の説明のために入れただけですので直接的には関係ありませんが、
このままコピペしてもらっても大丈夫です。
(コメントアウトと言うものでして、 // の後ろの文字は無視されるんですよ)
①アニメの名前
" " の中に、スペースの有無や、大文字・小文字の区別などに注意して、再生したいアニメの名前を
書き込んでください。
実は、アニメーションには2通りありまして、
(A)リンデンが初めから用意してくれているアニメ(デフォルトのアニメ)
(B)それ以外のアニメ
とがあります。
(A)デフォルトのアニメは全部で135種類のアニメが準備されていまして、普段よく見かけるアニメも
多く含まれています。これらのアニメを使用する場合は、オブジェクトの中にアニメをわざわざ入れなくても、
スクリプトに名前さえ書いておけばそれだけでちゃんと再生されるようになっています。(※1)
(B)自作のアニメ、購入したアニメ、拾ってきたアニメ等、デフォルトのアニメ以外を用いる場合は、
オブジェクトのコンテンツの中にそのアニメを入れた上で、スクリプトに名前を書き込む必要があります。
(※1)・・・デフォルトのアニメは、 http://www.lslwiki.net/lslwiki/wakka.php?wakka=animation
のページに、一覧が載っています。ただ、名前を見ただけでは実際にどのような動きをするのか
分かりにくいと思いますので、これらを再生するポーズ・スタンドを作ってみました。
おっしゃっていただきましたら 差し上げますので、どうぞFujiko Miklos宛のIMででもご連絡ください^^
②座る位置
スクリプトが入っているプリムの中心に対する、座る位置の相対座標を<x座標 , y座標 , z座標>のように
ベクトル表記します。各数値の単位はメートルで、
座標軸の向きは、下図のとおり
x軸正方向・・・東 x軸負方向・・・西
y軸正方向・・・北 y軸負方向・・・南
z軸正方向・・・上 z軸負方向・・・下 です。(※2)
って書くと、数学っぽい話になって難しそうですけど、例えば、<2.0 , -1.8 , 3.03>って書くと、オブジェクトの
中心から、東へ2.0m、南へ1.8m、上へ3.03mだけ離れた位置に座ることになります。
まぁ それだけの話です^^v (※3)
(※2)・・・この向きは、オブジェクトを回転させていない場合の向きですので、製作時に回転させた場合は調整が
必要です。
(※3)・・・座標を全部0、すなわち<0.0 , 0.0 , 0.0>にしてしまうと、スクリプトが作動しなくなるので、
その他の値に設定してください。
③座る角度
多分ここの設定が一番ややこしいと思います。スクリプトの入ったプリムに対して、どれだけの角度を
回転した状態で座るかを設定します。x軸、y軸、z軸それぞれを回転軸としたときの回転の向きは、
下図に書いた通りでして、回転させる角度を <x軸回転角度 , y軸回転角度 , z軸回転角度>
のような形のベクトル形式で記入します。回転角の単位はラジアンじゃなくて普通の度です。
座る位置を回転させない状態、すなわち< 0.0 , 0.0 , 0.0>に設定すると、x軸の正方向を向いて座ります。
(オブジェクトを回転させていなければ東向き)
例えば、< 0.0 , 0.0 , 90.0> と設定すると、z軸を回転軸として90度回転した向きに座るようになります。
(オブジェクトを回転させていなければ北向き)
ただし、これも 製作時にオブジェクトを回転させている場合は、設定が面倒です
オブジェクトを製作する段階で まったく回転させなかったプリムがあるのでしたら、そのプリムにスクリプトを
入れると、設定が楽になりますよ^^v
④透明化
ここには、0か1の数字を書き込んでください。
1すると、座ったときだけそのオブジェクトが消えるようになります。
ポーズボールやダンスボールとかは1にした方がいいですね。
逆に、ここの数値を0にすると、座っても消えません。普通の椅子は、もちろん0に設定ですね。
⑤パイメニューの表示文字
この部分を設定すると、パイメニューを開いたときに表示される文字を変更することができます。 (※4)
英語で書くのであれば、" " の中をそのまま書きかえれればOKです。
もちろん半角英数字ですし、あんまし長いと表示されませんよ・・・^^;;
少し頑張れば、日本語表記することも可能です
ただ、日本語を直接書き込んでも、スクリプト側が読みこんでくれないので、(※5)
専用のコードに変換する必要があります(このことをエンコードというらしいです)
一見ややこしそうですけど、ネット上で簡単にエンコードしてくれるサービスがありますので、
それらを利用するとそんなに難しくないです。ちなみに私がいつも使っているサイトはここです ↓
http://secondlife.chu.jp/lsl01.html#02
例えば、「大車輪」という日本語に対応するコードは 5aSn6LuK6Lyq という文字列だそうです。
これを利用して、
string text = llBase64ToString("5aSn6LuK6Lyq") ; // ⑤パイメニューの表示文字
のよう書けば、パイメニューに「大車輪」と表示されます。
えっ??llBase64ToStringって何????
心配いりません。上記のサイトだとそれもまとめてコピペできるので大丈夫ですよ
(※4)・・・デフォルトのままにしておきたいという場合は、この行と次の行
string text = "Sit Here" ; // ⑤パイメニューの表示文字
llSetSitText(text) ;
この2行を消しちゃってもいいです。
(※5)・・・新しいビューアーだと、わざわざエンコードしなくても、スクリプトに直接日本語を書き込めるという
ウワサもありますけど、私のは古いバージョンのままなので、試したことないです。
実際のところ どうなんでしょうね??
意味もなく長くなってしまいましたね・・・ お手軽に使っていただこうと思ってたんですけど、
変に敷居が高くなっちゃったみたいでスミマセン(>_<)
「この意味は??」等のご質問、「間違ってるぞ!」等のご指摘、その他ご意見等ございましたら、
のような形のベクトル形式で記入します。回転角の単位はラジアンじゃなくて普通の度です。
座る位置を回転させない状態、すなわち< 0.0 , 0.0 , 0.0>に設定すると、x軸の正方向を向いて座ります。
(オブジェクトを回転させていなければ東向き)
例えば、< 0.0 , 0.0 , 90.0> と設定すると、z軸を回転軸として90度回転した向きに座るようになります。
(オブジェクトを回転させていなければ北向き)
ただし、これも 製作時にオブジェクトを回転させている場合は、設定が面倒です
オブジェクトを製作する段階で まったく回転させなかったプリムがあるのでしたら、そのプリムにスクリプトを
入れると、設定が楽になりますよ^^v
④透明化
ここには、0か1の数字を書き込んでください。
1すると、座ったときだけそのオブジェクトが消えるようになります。
ポーズボールやダンスボールとかは1にした方がいいですね。
逆に、ここの数値を0にすると、座っても消えません。普通の椅子は、もちろん0に設定ですね。
⑤パイメニューの表示文字
この部分を設定すると、パイメニューを開いたときに表示される文字を変更することができます。 (※4)
英語で書くのであれば、" " の中をそのまま書きかえれればOKです。
もちろん半角英数字ですし、あんまし長いと表示されませんよ・・・^^;;
少し頑張れば、日本語表記することも可能です
ただ、日本語を直接書き込んでも、スクリプト側が読みこんでくれないので、(※5)
専用のコードに変換する必要があります(このことをエンコードというらしいです)
一見ややこしそうですけど、ネット上で簡単にエンコードしてくれるサービスがありますので、
それらを利用するとそんなに難しくないです。ちなみに私がいつも使っているサイトはここです ↓
http://secondlife.chu.jp/lsl01.html#02
例えば、「大車輪」という日本語に対応するコードは 5aSn6LuK6Lyq という文字列だそうです。
これを利用して、
string text = llBase64ToString("5aSn6LuK6Lyq") ; // ⑤パイメニューの表示文字
のよう書けば、パイメニューに「大車輪」と表示されます。
えっ??llBase64ToStringって何????
心配いりません。上記のサイトだとそれもまとめてコピペできるので大丈夫ですよ
(※4)・・・デフォルトのままにしておきたいという場合は、この行と次の行
string text = "Sit Here" ; // ⑤パイメニューの表示文字
llSetSitText(text) ;
この2行を消しちゃってもいいです。
(※5)・・・新しいビューアーだと、わざわざエンコードしなくても、スクリプトに直接日本語を書き込めるという
ウワサもありますけど、私のは古いバージョンのままなので、試したことないです。
実際のところ どうなんでしょうね??
意味もなく長くなってしまいましたね・・・ お手軽に使っていただこうと思ってたんですけど、
変に敷居が高くなっちゃったみたいでスミマセン(>_<)
「この意味は??」等のご質問、「間違ってるぞ!」等のご指摘、その他ご意見等ございましたら、
下のコメント欄もしくはFujiko Miklos宛のIMにて お願いしますm(_ _)m
2008年09月09日
ついに 土地!!
あららら・・・・ またまた 一月ぶりの更新ですね
もうすぐSLを始めて1周年になるので、
そろそろ 私も土地を借りるか買うかしようかなぁ~ と思ってたんですよ。
で、借りる方が得なのか買う方が得なのかとか、どこの場所がいいかとかを
いろいろな人に聞いたりしてたところ・・・・・
なななんと!!!!
「今は使ってへん土地があるから ふじこ自由に使ってくれてええで」
って、Abさんが 言ってくださったんですよ おおおおお~~
ありがたや~~ ありがたや~~ ホント神様のようです
えと、場所はですねぇ
メインランドのUoperaというSIMでして、アドレスは
http://slurl.com/secondlife/Uopera/26/178/36
ですです
32m×16m=512sqmで、プリム数は113かな
もちろんMatureです!
交通量16のクソ田舎で、周りも空き地だらけなのでいい感じですよ
で、 どうせなら有効活用をせねば! と思ってるんですけどね
さて、何を作りましょう?????
家
う~~ん、まったく興味ないですねぇ^^;;
お店
売るモノがない・・・・・
実験場所
そんなのサンドボックスで十分だし
まぁ、ボチボチ考えていくことにします
とりあえず、 箱を1つ置いて座ってみました
あ、まったく関係ない話ですけど、 髪型を変えてみました
続きを読む