エレベーターを設置する

私の建てた家は2階建てで屋上を入れて3フロアーありますが、各階に通じる穴はプリム節約のために塞がってしまったのでエレベーター(テレポーター)を設置してみようと思います。スクリプトはチンプンカンプンなので無料でもらってきたテレポーターのものを拝借します。

  1. テレポーターのオブジェクトを作成して出発地と目的地に置く。
  2. 目的地のオブジェクトを Edit > Object タブ を開いて座標(Position の x, y, z)を調べる。
  3. 以下のスクリプトの < と >; の間に座標を入力する。例:14.279, 127.130, 26.138 ( , の後は半角スペース)  注: 行き先が1つだとしても4つ全ての座標x,y,zを埋めないとSaveできません。128.0, 128.0, 128.0 でOK。
  4. 行き先総数(最大4)、目的地名、目的地説明を入力してスクリプトをコピーする。
  5. 出発地点のオブジェクトを Edit > Content タブ > New Script > 作成されたスクリプトファイルを開く > Ctrl + v でペースト > Running にチェックを入れる > Save

最初に手順5をやって Second Life 内でそれぞれ入力しても構いませんが、日本語の部分は文字化けします。ちなみにテレポーターが有効なのは同じsim 内で300mだそうです。



[スクリプトを見る]


//行き先総数 Specify the total number of destinations that are to be used. Max number is no more than the destinations listed below.
integer totalDest = 4;


//目的地座標 Enter the destinations here.
vector dest1 = <128.0,>;
vector dest2 = <128.0,>;
vector dest3 = <128.0,>;
vector dest4 = <128.0,>;


//目的地名 Replace name of destinations with a short name. Example: "second floor".
string dest1_name = "
REPLACE THIS WITH A DESTINATION NAME";
string dest2_name = "REPLACE THIS WITH A DESTINATION NAME";
string dest3_name = "REPLACE THIS WITH A DESTINATION NAME";
string dest4_name = "REPLACE THIS WITH A DESTINATION NAME";


// 目的地説明 Replace description of destinations with a short description. These will appear when the user clicks the button. Example: "living room and private bar".
string dest1_desc = "
REPLACE THIS WITH A DESTINATION DESCRIPTION";
string dest2_desc = "REPLACE THIS WITH A DESTINATION DESCRIPTION";
string dest3_desc = "REPLACE THIS WITH A DESTINATION DESCRIPTION";
string dest4_desc = "REPLACE THIS WITH A DESTINATION DESCRIPTION";


// ------------------------- NO NEED TO MODIFY ANYTHING BELOW THIS LINE -------------------------
integer currentDestNum = 1;
vector currentDest;
string currentDestName;
string currentDestDesc;


rotate_to_zero()
{
llSetRot(<0,0,0,0>);
}

setDestination()
{
if (currentDestNum == 1)
{
currentDest = dest1;
currentDestName = dest1_name;
currentDestDesc = dest1_desc;
}
else if (currentDestNum == 2)
{
currentDest = dest2;
currentDestName = dest2_name;
currentDestDesc = dest2_desc;
}
else if (currentDestNum == 3)
{
currentDest = dest3;
currentDestName = dest3_name;
currentDestDesc = dest3_desc;
}
else if (currentDestNum == 4)
{
currentDest = dest4;
currentDestName = dest4_name;
currentDestDesc = dest4_desc;
}

vector pos = llGetPos();
vector offset = currentDest - pos;

llSitTarget(offset, ZERO_ROTATION);

string hoverText = "TELEPORT TO:\n"+currentDestName+"\n"+currentDestDesc+"\n\.\n(click to choose destination)";
llSetText(hoverText,<0,1,0>,1);
}

default
{
state_entry()
{
rotate_to_zero();
setDestination();
llSetSitText("Teleport");
}
on_rez(integer num)
{
llResetScript();
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if (llAvatarOnSitTarget() != NULL_KEY)
{
llMessageLinked(LINK_SET, 0, "teleporting", "");
llUnSit(llAvatarOnSitTarget());
}
}
}
touch_start(integer total_number)
{
currentDestNum += 1;
if (currentDestNum > totalDest) currentDestNum = 1;
rotate_to_zero();
setDestination();
}
}

まるごとJavaScript & Ajax ! Vol.1まるごとJavaScript & Ajax ! Vol.1
天野 仁史 舘野 祐一 川崎 有亮

WEB+DB PRESS Vol.37 まるごとPerl! Vol.1 WEB+DB PRESS Vol.36 WEB+DB PRESS Vol.35 Binary Hacks ―ハッカー秘伝のテクニック100選

by G-Tools