2011年10月08日
バックスクリーンのスクリプト

前回説明したオブジェクトは出来上がっていますでしょうか?
今回はスクリプト本体をご紹介します。
以下のスクリプトを、親プリムに入れてください。 それだけですw
今回はスクリプト本体をご紹介します。
以下のスクリプトを、親プリムに入れてください。 それだけですw
注:ebiichi mayoさんが、2008年5月15日のテクスチャーチェンジャーの授業で使ったスクリプトの改造版です。
授業に出た生徒が掲載した記事から引用させて頂いたので問題は無いと思いますが
当人に伝える術が有りません。どなたか、連絡先を御存じでしたら教えて頂けると助かります。
(これは、よくブログで出されているlslスクリプトの変更事例として御覧ください^^)
----------------------------------------------------------
//
// イベント用 (グループ専用)
// モニターで選択し、モニタータッチでスクリーンにテクスチャーを映しこむ
// エビマヨ60分受講生引用→VolFall部分改造
//
integer tx_max;
integer tx_num;
chg_tx()
{
string msg_tx=(string)(tx_num+1)+"枚目/全"+(string)tx_max+"枚";
llSetText(msg_tx,<1,1,1>,1.0);
llSetLinkTexture(1,llGetInventoryName(INVENTORY_TEXTURE,tx_num),ALL_SIDES);
// イベント用 (グループ専用)
// モニターで選択し、モニタータッチでスクリーンにテクスチャーを映しこむ
// エビマヨ60分受講生引用→VolFall部分改造
//
integer tx_max;
integer tx_num;
chg_tx()
{
string msg_tx=(string)(tx_num+1)+"枚目/全"+(string)tx_max+"枚";
llSetText(msg_tx,<1,1,1>,1.0);
llSetLinkTexture(1,llGetInventoryName(INVENTORY_TEXTURE,tx_num),ALL_SIDES);
//リンクプリム1番(モニター)にテクスチャーを表示:決めた面だけ変えるにはALL_SIDESを面番号に変更
}
default
{
state_entry()
{
llAllowInventoryDrop(FALSE);
tx_max=llGetInventoryNumber(INVENTORY_TEXTURE);
tx_num=0;
chg_tx();
}
touch_start(integer total_number)
{
integer sw=llDetectedLinkNumber(0);
if (llDetectedGroup(0)){
//グループが同じかどうか
if (sw==1)
{
llSetLinkTexture(4,llGetInventoryName(INVENTORY_TEXTURE,tx_num),ALL_SIDES);
//リンクプリム4番(スクリーン)に1番のテクスチャーを投射:決めた面だけ変えるにはALL_SIDESを面番号に変更
}
}
if ((sw==2)||(sw==3))
{
tx_num=tx_num+(sw*2)-5;
if((tx_num>=tx_max)||(tx_num<0))
{
tx_num=(tx_num*(llAbs(tx_num)-tx_max)/llAbs(tx_num));
}
chg_tx();
}
}
changed(integer mask)
{
if (mask & (CHANGED_INVENTORY |
CHANGED_ALLOWED_DROP))
{
tx_max=llGetInventoryNumber(INVENTORY_TEXTURE);
llWhisper(0,"背景を追加しました。現在の保存数は"+(string)tx_max+"枚です。");
}
}
}
}
default
{
state_entry()
{
llAllowInventoryDrop(FALSE);
tx_max=llGetInventoryNumber(INVENTORY_TEXTURE);
tx_num=0;
chg_tx();
}
touch_start(integer total_number)
{
integer sw=llDetectedLinkNumber(0);
if (llDetectedGroup(0)){
//グループが同じかどうか
if (sw==1)
{
llSetLinkTexture(4,llGetInventoryName(INVENTORY_TEXTURE,tx_num),ALL_SIDES);
//リンクプリム4番(スクリーン)に1番のテクスチャーを投射:決めた面だけ変えるにはALL_SIDESを面番号に変更
}
}
if ((sw==2)||(sw==3))
{
tx_num=tx_num+(sw*2)-5;
if((tx_num>=tx_max)||(tx_num<0))
{
tx_num=(tx_num*(llAbs(tx_num)-tx_max)/llAbs(tx_num));
}
chg_tx();
}
}
changed(integer mask)
{
if (mask & (CHANGED_INVENTORY |
CHANGED_ALLOWED_DROP))
{
tx_max=llGetInventoryNumber(INVENTORY_TEXTURE);
llWhisper(0,"背景を追加しました。現在の保存数は"+(string)tx_max+"枚です。");
}
}
}
//-------------------この前の行まで-----------------------------
スクリプト中に説明を加えておきました。
なので、それ以上の質疑は受け付けません。
何故かって?・・・・・言わぬが仏って知ってるよね?^^;
(エビマヨさ~ん助けてw)
------------------------------------------------------
追加説明:面番号を確かめるには、
「テクスチャーを選択」にて、目標の面のみを選択
Ctrl+Alter+Shift+T
すると、以下のような順番で説明が出ます。
Texture info for: Object(オブジェクト名)
512x512 opaque on face 4
(テクスチャーサイズ) (表記は4番の面)
使い方の説明は、前回説明しましたが、矢印でテクスチャー画像を選び
モニターをタッチするとスクリーンがモニターと同じ画像に変わります。
事前に、小さなモニターで観客もチラ見してるので、スクリーンに映し出さ
れた時は、読み込みが一瞬で済みます^^
Posted by vol Fall at 21:04│Comments(0)
│●Communication
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。