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


