最近の記事

2007年04月23日

タッチで直接マップを開く llMapDestination

オブジェクトをタッチすることで、MAPの場所を表示してテレポートをしてもらうスクリプト

--------------------------------------------------------------------------------

default
{

touch_start(integer total_number)
{
llMapDestination("Sugamo", <41,118,22>, <0,1,0> );
}

}


--------------------------------------------------------------------------------

SugamoにはSIM名を、

次の座標は、SIM上の、画面に書いてある数字を書けばOKです。

最後の座標は・・・まあ、<0,1,0>でいいかも適当にどうぞ



タグ:マップ

posted by Son Clave at 20:23 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

ベクトルとローテーションの変換方法

rotation型 と vector型 の変換

--------------------------------------------------------------------------------

llRot2Euler( rotation);

これで変換できる!この逆は

llEuler2Rot( vector );

vectorはPI を使ってあらわします。<PI*?,PI*?,PI*?>みたいな

--------------------------------------------------------------------------------

チョットシタ情報

PI = 180度

PI_BY_TWO = 90度

DEG_TO_RAD を角度にかけるとラジアンに

RAD_TO_DEG をラジアンにかけると角度に

posted by Son Clave at 19:31 | Comment( 0 ) | TrackBack( 0 ) | 角度の話

humanbar.png

アバターを検知 llSensor()

--------------------------------------------------------------------------------

default
{

state_entry()
{
llSetTimerEvent(読み込みを更新する時間(秒) );
}

timer()
{
llSensor("特定の名前もしくは空白", NULL_KEY, AGENT, 測定する距離m, 角度PI表示 );
}

sensor(integer total_number)
{

センサーにかかった場合は、どう命令をするかを書く

}

}


--------------------------------------------------------------------------------

測定できる距離はだいたい96mくらいマデでした。

あとは、名前を指定しない場合は、一番近くの人を検知します。

また特定の人だけを検出して条件で命令文を動かすことも可能。

タグ:アバター

posted by Son Clave at 19:28 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

オブジェクトを増やす llRezObject

指定したアイテムを増やす(登場させる)スクリプト

オブジェクトに触れば増える方法を書きます。


--------------------------------------------------------------------------------

default
{

touch_start(integer a)
{
llRezObject("アイテムの名前" , 登場させたい座標 , 影響する力 , llEuler2Rot(座標) , 数字);
}

}


--------------------------------------------------------------------------------

増やしたいアイテムは、内容のところへスクリプトと一緒に入れておきます。

登場させたい座標は vector表記で、<X,Y,Z>にします。このとき便利な方法は、スクリプトを入れているオブジェクトの座標をまず、llGetPos();でとり、そこに移動させたい分だけ足すのです。これで簡単に位置をしていできます。

登場するオブジェクトに影響する力は vector表記にしますが、通常は ZERO_VECTOR でいいようです。

llEuler2Rot(座標)は、通常 ROTATIONがはいるのですが、なにもしていしないときには、ZERO_ROTATIONでいいですが、もし変更する場合は、llEuler2Rot(座標)でやったらいいです、この場合は、角度ですので、座標は、<X,Y,Z>であらわします。このときに注意するのは、PI を使った表記で角度をしていするということです。 PI=180度です。PI*2= 360度 です。かけることで数値をかえます。

最後の数字は、0以外をいれたらいいとのこと。

タグ:増やす

posted by Son Clave at 19:06 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

物理的力のオンとオフ llSetStatus(STATUS_PHYSICS,)

オブジェクトに働く物理的力のオンとオフを切り替えるスクリプト

--------------------------------------------------------------------------------

default
{

state_entry()
{
llSetStatus(STATUS_PHYSICS,オンかオフか);
}

}


--------------------------------------------------------------------------------

オン=TRUE もしくは、1

オフ=FALSE もしくは、0

この数字・文字で決めることができる。

タグ:物理的力

posted by Son Clave at 19:05 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

強制マウスルック llForceMouselook()

座るポーズボールで、座ったときに強制的にマウスルックにするスクリプト

--------------------------------------------------------------------------------

default
{

state_entry()
{
llForceMouselook(TRUE);
llSitTarget(<ボールからどの位置に座るかを座標で書く>,ZERO_ROTATION);
}

}


--------------------------------------------------------------------------------

llForceMouselook(TRUE);

によって強制的にマウスルックになります。

逆にTRUEをFALSEにすれば、マウスルック解除になります。

posted by Son Clave at 18:36 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

オブジェクトとアバターの接触を感知 collision_start()

オブジェクトがキャラとぶつかる・接触したことを感知するスクリプト

--------------------------------------------------------------------------------

default
{

collision_start(integer a)
{
何か実行したいこと
}

}


--------------------------------------------------------------------------------

実行したいことはなんでも可能ですが、問題は条件などを設定しなければ、触り続けることで何度も連続して”実行させたいこと”が起こってしまいます。

posted by Son Clave at 18:34 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

LSLでの型

型というのは、数値や言葉を一次的に蓄えておく箱みたいなものです。しかしながらコンピュータはできるだけメモリーを消費しないように、必要なデータにあわせて最初から箱の形態を指定しておきます。それにより無駄にデータ空間を使うのを防いでいます。


--------------------------------------------------------------------------------

integer 整数

float 小数

vector <"X","Y","Z">であらわす、XYZの座標データ

rotation <"X","Y","Z","S">であらわす、回転のための座標

key UUIDというものを使って、SLの内部にあるオブジェクトや各種データを指定

string 文字列を入れるものです。

list 配列をいれることができます。

--------------------------------------------------------------------------------

違う型のものを違う型に代入することはできません、そのため代入するときには一度、変換しなくてはいけません。

例えば integer型を float型にするには


--------------------------------------------------------------------------------

integer a;

float b;

があるとして、

a = (integer)b;

という感じで、合わせる型を()で先につければOKです。

タグ:

posted by Son Clave at 18:32 | Comment( 0 ) | TrackBack( 0 ) | LSLでの型

humanbar.png

オブジェクトの座標を出力 llGetPos()

オブジェクトの座標を出力するスクリプト
実は簡単だったのですが、オブジェクトの座標を出力する方法を探しました。

XYZの座標を文字としてオーナーや人に知らせるスクリプトです。


--------------------------------------------------------------------------------

vector a;

default
{
state_entry()
 {
a = llGetPos();
llOwnerSay((string)a);
 }
}


--------------------------------------------------------------------------------

llOwnerSay や llSay や llWhisper では、string 形式でしか出力できないので、座標の vector 形式を変換しなければなりません。そこで(string)を使うと変換できました。

posted by Son Clave at 18:30 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

プログラム実行に時差をつける llSleep()

プログラム実行に時差をつけるスクリプト
読み込まれて時差をつけてプログラムを発動させるスクリプト


--------------------------------------------------------------------------------

llSleep(数字);


--------------------------------------------------------------------------------

この関数を使えば、数字のところにいれた時間(秒)の後にプログラムが発動できるようです。

タグ:時差

posted by Son Clave at 18:29 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

オブジェクトを消す llDie()

オブジェクトを消すスクリプト
オブジェクトを削除する(消えてもらう)スクリプト

いずれ使うあろう、便利なコマンド! llDie();


--------------------------------------------------------------------------------

default
{
touch_start(integer num)

{
llDie();
}

}


--------------------------------------------------------------------------------

これで、触ったらオブジェクトは消えます。いろいろ条件によっても消えるようにできるので役立つスクリプトです。

posted by Son Clave at 18:28 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

float型ランダム関数 llFrand

タッチしてテレポートをするスクリプト
タッチするとMAPを出してテレポートができるようにする。

--------------------------------------------------------------------------------

default
{

touch_start(integer total_number)
{
llMapDestination( "目的地名", <座標>,<0,0,0> );
}

}

--------------------------------------------------------------------------------

目的地名や座標は、テレポートをするときにMAPで確認するか、もしくは現在いる場所の、画面の上に書かれていますので、それを使えば可能です。

タグ:ランダム

posted by Son Clave at 18:26 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

タッチしてMAP表示テレポート llMapDestination

タッチしてテレポートをするスクリプト
タッチするとMAPを出してテレポートができるようにする。

--------------------------------------------------------------------------------

default
{

touch_start(integer total_number)
{
llMapDestination( "目的地名", <座標>,<0,0,0> );
}

}

--------------------------------------------------------------------------------

目的地名や座標は、テレポートをするときにMAPで確認するか、もしくは現在いる場所の、画面の上に書かれていますので、それを使えば可能です。

posted by Son Clave at 18:25 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

オブジェクトの上に文字を表示する llSetText()

オブジェクトの真上に名前など文章を表示するスクリプト

--------------------------------------------------------------------------------

default
{
state_entry()
{
llSetText("ABC",<1.0,1,1.0>,1);
}
}

--------------------------------------------------------------------------------

llSetTextを使って表示します。ABCの部分に英文字や数字を使って文章を、<0.0,0.0,0.0>は色を表示できます。RGBの割合を書きます、0から1.0までの度合いで3色を混ぜて色を表記します。

タグ:文字を表示

posted by Son Clave at 18:23 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

好きなコマンドで命令を実行させる llListen

チャットのところに命令(コマンドを打ち込む)することで、スクリプトを実行させるスクリプト。

--------------------------------------------------------------------------------

default
{

state_entry()
{

llListen(1,"","","");

}

listen(integer channel,string name, key id, string message)
{
 if(message == "コマンド1")
  {
   命令文
  }
 if(message == "コマンド2")
  {
   命令文
  }

}

}

--------------------------------------------------------------------------------

llListen(1,"","",""); 

これが命令を聞くための待機しているところ。必須である。

listen(integer channel,string name, key id, string message)

これも必須である。こっちは条件文によりコマンドから何かを実行へコマンド1 とか、コマンド2というのを設定したら、その下に命令文(実行したいこと)を書く。

”コマンド”にはできれば、英文で start とか stop などわかりやすくしたほうがいいかも。でこれを動かすには、チャットのところの文字入力で /1 start とか /1 stop などと入力すると指定した命令文が実行される。

key id に llOwner() と入れれば、持ち主しか使えなくなる。あとチャンネルに 0を入れれば、/を使ったコマンドを使わず、直接発言したコマンドで使用できる

タグ:コマンド

posted by Son Clave at 18:20 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

ずっと音を鳴らす llLoopSound

音を鳴らし続けるスクリプト

--------------------------------------------------------------------------------

default
{
state_entry()
{
llLoopSound("サウンドファイル名",ボリューム);
}
}

--------------------------------------------------------------------------------

サウンドファイルは、編集でスクリプトと同様に内容の場所にいれておいてください。それから、ボリュームは 0から1 の間の数字を入れること。音を鳴らしたいオブジェクトにいれておくこと。

posted by Son Clave at 18:18 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

オブジェクトサイズ固定 llSetScale

スクリプトで物のサイズを決めてしまおう!というか、

どれだけでもデカク・小さくできるかも!?

実験してみたところ、やはりセカンドライフの世界では

MAX 10mでした。それを超えるのは不可能かな!


--------------------------------------------------------------------------------

default
{

state_entry()
{
float ascale = 2;
llSetScale(< ascale, ascale, ascale > );
}

}


--------------------------------------------------------------------------------

posted by Son Clave at 18:17 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

流れるテクスチャー llSetTextureAnim

流れるテクスチャーをスクリプトで表現
このスクリプトを使えば、テクスチャーを流れるアニメーションにすることができます。

llSetTextureAnim(integer mode, integer side, integer x_frames, integer y_frames, float start, float length, float rate);

使用例


--------------------------------------------------------------------------------

default
{
 state_entry()
  {
   llSetTextureAnim(ANIM_ON | SMOOTH | LOOP, ALL_SIDES,1,1,1.0, 1,0.25);
  }

}


--------------------------------------------------------------------------------

posted by Son Clave at 18:16 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

自動的に回転する llTargetOmega

物が自動的に回転するLSLスクリプトです。Z軸を中心としてゆっくり、反時計回転をします。最初の integer speed=1; の数値が速度になってますので、回転を早めたい場合は数値を上げてみてください。


--------------------------------------------------------------------------------

integer speed=1;

default
{
state_entry()
{
llTargetOmega(<0,0,1>, speed, 1);
}
}


--------------------------------------------------------------------------------

応用偏として、回転をTouchすることによって変化させることもできます。


--------------------------------------------------------------------------------

integer speed = 1;

default
{

touch(integer num)
{
speed++;

if (speed==10)

speed=1;

llTargetOmega(<0,0,1>, speed, 1);
}
}


--------------------------------------------------------------------------------

最初はスピードが1(ゆっくり)でタッチするごとに1ずつスピードアップ、10まで上がったら、1に戻るように設定しています。


--------------------------------------------------------------------------------

スピードで整数でなく、小数点を用いた数値を入れる場合は、

integer(整数)でなく、float(小数点)を用いてください。

つまり、

一行目の

integer speed = 1;

float speed = 0.1;

という風に表記してください。

posted by Son Clave at 18:14 | Comment( 0 ) | TrackBack( 0 ) | スクリプト

humanbar.png

リンデンスクリプトのカテゴリーを移動

Second Life Walker - セカンドライフウォーカー

↑のブログから

こちらのブログへスクリプト部分を移設します。

posted by Son Clave at 17:46 | Comment( 0 ) | TrackBack( 0 ) | その他

humanbar.png

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。