ソラマメブログ
< 2008年08>
S M T W T F S
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
アクセスカウンタ
オーナーへメッセージ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。 解除は→こちら
現在の読者数 3人

2007年11月20日

テクスチェンジャー(リンデンスクリプト Tips)

 テクスチェンジャーのスクリプトです。
オブジェクトのコンテンツの中にテクスチャをドラッグするだけでOKです。
オブジェクトをクリックするか、30秒毎に自動的にテクスチャが切り替わります。

「スクリプト内容」
//
//   Texture Changer script   v1.0
//
//                   Created by Zero2000 Kid     2007/11/20
//

float ChangeCycle=30;
integer ItemType=INVENTORY_TEXTURE;
integer txct;
integer num;
list list_tx;
string textureName;

getTxlist() {
    llSetTimerEvent(0.0);
    list_tx=[];
    integer i;
    txct = llGetInventoryNumber(ItemType);
    if (txct!=0) {
        for (i = 0; i < txct; i++) {
            list_tx+=llGetInventoryName(ItemType,i);
        }
        llSetTimerEvent(ChangeCycle);
    }
}

setTexture() {
    if (txct!=0) {
        num++;
        if (num>=txct) num=0;
        textureName=llGetInventoryName(ItemType,num);
        llSetTexture(textureName, ALL_SIDES);
    }
}

default {

    state_entry() {
        getTxlist();
    }

    on_rez(integer int) {
        llResetScript(); 
    }

    touch_start(integer t) {
        setTexture();
    }
    
    changed(integer change){
        if (change & CHANGED_INVENTORY){
            getTxlist();
        }
    }
    
    timer() {
        setTexture();
    }
}

「スクリプトの説明」
1. state_entryの発生、またはコンテンツの中が変更すると関数getTxlist()を呼びだす。
2. 関数getTxlist()では、llGetInventoryNumberでテクスチャの数を取得し、llGetInventoryNameで
  テクスチャの名前をリスト変数list_txに格納する。
3. llSetTimerEventでタイマーを起動し、関数setTexture()を呼び出す。
4. 関数setTexture()では、リスト変数list_txからテクスチャの名前を取得し、llSetTextureでオブ
   ジェクトにテクスチャを貼り付ける。
5. 以後、タイマーイベントが発生する度に関数setTexture()を呼び出し、変数numをインクリメント
  することにより、オブジェクトに貼り付けるテクスチャを変更する。
6. オブジェクトをクリックした場合は、touch_start内の関数setTexture()を呼び出し、4の処理を
   実行する。

 * 一行目のChangeCycle=30;の30の部分を変更するとテクスチャを切り替える間隔を変更できます。
  30というのは30秒間隔という意味です。
  自動的にテクスチャを切り替えたくない場合は、この値を0にしましょう!



リンデンスクリプト Tips Intexへ


この記事へのトラックバックURL

この記事へのコメント
INできない。。。はい、ぐちでしたw
Posted by hime at 2007年11月20日 22:08