ソラマメブログ
※カテゴリー別のRSSです
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 0人
オーナーへメッセージ

  

Posted by at

2007年12月14日

装着確認



<装着確認> 2007/06/21 - 2007/12/14

オブジェクトを装着した時 attach と on_rez は
どちらが先に発生するかテスト
補足
 attach(key id) アタッチされた/デタッチされた
  装着イベント
  agentが objectを脱着した際に呼ばれる
  id == NULL_KEY の時 デタッチしたと判断できる
  また、on_rez で llGetAttached() == 0 であれば、
  アタッチせず 地面に置いたと思われる
  引数 id はアタッチした物体のUUID

以下をテスト
 1.複数プリムを選択
 2.選択状態のまま右クリックで Take
 3.この状態のオブジェクトを着ると?
  You can't attach multiple objects to one spot.
  と表示され、着ることはできない。 れっ?できるぞ。
  インベントリ内のアイコンの形が箱でなく、
  砕けた箱の様なアイコンになっている。
  れっ?、昔は出来なかったのに今はできる。
  アイコンも砕けてない。普通の箱形だ。 2007/12/12


default
{ on_rez(integer total_number){
  llOwnerSay("Event On-rez 1 - " + (string) llGetAttached());
  llResetScript();
  llOwnerSay("Event On-rez 2");
 }
 
 attach(key attached_key ){
  if ( attached_key == NULL_KEY ) {
   llOwnerSay("Event attach(NULL_KEY)");
  } else {
   llOwnerSay("Event attached_key = " +
    (string) attached_key);
  }
 }
 
 state_entry(){
  llOwnerSay("state_entry");
 }
}
テスト結果
 インベントリから着た時、地面に置いた時
  Event On-rez 1 - n (nは着た場所 right hand なら6)
  state_entry     (0は地面に置いたので着ていない状態)
 取り外した時、ドロップした時
  Event attach(NULL_KEY)
 地面に置いた状態から着た時
  Event attached_key = xxxx-xxx(UUID)
注意
 リセットによって "Event On-rez 2" が表示されなかった
 インベントリから着ると attach イベントが発生しない
所感
 テスト結果は変わりないが、リンクオブジェクトは着れる。
 微妙に昔と仕様が変わることってがあるらしい。
  


Posted by VtWin at 19:46Comments(1)スクリプト

2007年11月20日

LSLを勉強するなら



LSLを勉強するなら。
アイピロなんてどうだろう。
僕が説明するまでもない。
ここを参照。
http://www.aipiro.com/lsltips/indexType1.htm
  


Posted by VtWin at 00:35Comments(0)スクリプト

2007年11月18日

スクリプトのエラーチェック



スクリプト作ってエラーって方がいたので、
ホームページにコピペして、
シンタックス(文法)チェックをしてくれるサイトを紹介しよう。
http://w-hat.com/lslint/

上記サイトをスクロールダウン。
下の白いテキストボックスにスクリプトを貼って
<Run lslint!>ボタンを押す。

いかがかな?

でも、ホームページに貼ってボタンを押したってことは、
ホームページの作者にスクリプトがばれるので、
秘密にしたいスクリプトがあれば注意。

もっともスクリプトはオブジェクトとコミだし、
作った時点でバグも潜んでいるだろうから、
ばれてもあんまり関係ないんだよね。
  


Posted by VtWin at 02:58Comments(2)スクリプト

2007年08月09日

フェイルセーフ


スクリプトをやってて思うのですが、
心がけるのは、分かりやすさと安全性です。

以下の例は物を生成し、生成した時に一次属性にして、
何かあっても自動的に削除されるようにと言う指定です。

引数の piNum は必ず0より大きい数字になる設計なので、
特に問題はないのですが、
<い> は if文の上の<あ>に書くのが正解です
(わけあって<い>に書くなら<い>が正解)
予想外の動きがあっても、安全側に進む。
これをフェイルセーフといいます。

Do - Loop には必ず脱出方法を考える今日このごろ。
僕の状態と同じ。常に脱出方法を考えておかないと・・ね。

【例】
 on_rez(integer piNum)
 { //<あ>
  if (piNum > 0)
  { //ここにはいろいろ記述してますが省略
   //一次属性にして約一分後には自動的に削除
   <い> llSetPrimitiveParams([PRIM_TEMP_ON_REZ, TRUE]);
  


Posted by VtWin at 11:32Comments(0)スクリプト