指定したアバターのみが使用可能な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 Indexへ
Posted by Zero2000 Kidd at
14:00
│
Comments(5)
│
リンデンスクリプトTips