ソラマメブログ
< 2008年12>
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      
アクセスカウンタ
オーナーへメッセージ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。 解除は→こちら
現在の読者数 4人

2008年08月23日

SIM内テレポーター2(リンデンスクリプト Tips)


 指定したアバターのみが使用可能なSIM内テレポータースクリプトです。
プライベートなスカイボックスの移動等に使用されてはいかがでしょうかw
スクリプトは、SIM内テレポーターを改造したものを使用します。


「スクリプト内容」
//
//    SHOP ZERO Tips30 SIM Teleporter2  script   v1.0
//
//                   Created by Zero2000 Kid     2008/08/23


//----------- PARAMETER SET -----------------//
vector targetPoint=<1,1,1>;
list memberlist=["Zero2000 Kidd","Usain Volt"];
// ------------------------------------------//

vector basicPoint;
key sitavkey;

teleport( vector d ) {
    integer s = (integer)(llVecMag(d-llGetPos())/10)+1;
    if ( s > 100 ) s = 100;
    integer e = (integer)( llLog( s ) / llLog( 2 ) );
    list rules = [ PRIM_POSITION, d ];
    integer i;
    for ( i = 0 ; i < e ; ++i ) rules += rules;
    integer r = s - (integer)llPow( 2, e );
    if ( r > 0 ) rules += llList2List( rules, 0, r * 2 + 1 );
    llSetPrimitiveParams( rules );
}


default {
    state_entry() {
        llSetText("Please right click for Teleport", <1,1,1>, 1.0);
        llSetAlpha(1.0, ALL_SIDES);
        llSitTarget(<0.0,0.0,0.1>,ZERO_ROTATION);
        llSetSitText("Teleport");
        
    }
    
    on_rez(integer int) {
        llResetScript();
    }
    
    changed(integer change){
        if (change & CHANGED_LINK){
            sitavkey = llAvatarOnSitTarget();
            basicPoint = llGetPos();
            state move;                                  
        }
    }
}


state move {
    state_entry() {
        integer findIndex = llListFindList(memberlist,[llKey2Name(sitavkey)]);
        if (findIndex==-1) {
            llUnSit(sitavkey);
        } else {
            llSetText("", <1,1,1>, 1.0);
            llSetAlpha(0, ALL_SIDES);
            teleport(targetPoint);
            llUnSit(sitavkey);
            teleport(basicPoint);
        } 
        state default;
    }
}


「使用方法」
1. 1行目のtargetPointにテレポート先の座標を指定します。
2. 2行目のmemberlistにテレポートを許可するアバター名を指定します。
    * アバターを複数指定する場合は、カンマ(,)で名前を区切ります。
    list memberlist=["アバター名1","アバター名2","アバター名3"];
3. テレポート用のオブジェクトを1つ作成します。(球でもボックスでも何でも構いません。)
4. オブジェクトにスクリプトをドラッグします。

以上で完了です。
オブジェクトを右クリックして、パイメニューからTeleportを選択するとテレポートします。


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




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