// タッチでリンク番号を表示
default
{
touch_start(integer total_number)
{ // タッチされたとき
key id=llDetectedKey(0); // タッチしたアバターのキー
if (id == llGetOwner()) { // オーナーだったら
integer num=llDetectedLinkNumber(0); // タッチされたプリムのリンク番号
list faces=[]; // グローデータ記録用リスト
integer i;
integer j=llGetLinkNumberOfSides(num); // タッチされたプリムの全面数
for (i=0; i < j; i++) { // 面の数だけ繰り返し
list glow=llGetLinkPrimitiveParams(num,[PRIM_GLOW,i]); // 面ごとにグローを取得して
faces+=[PRIM_GLOW,i]+glow; // グロー設定で使える形式にしてリストに保存
}
llOwnerSay("Link no."+(string)num); // タッチされたプリムのリンク番号を表示
llSetLinkPrimitiveParams(num,[PRIM_GLOW,ALL_SIDES,1.0]); // タッチされたプリム全面のグローを1.0にセット
llSetLinkPrimitiveParamsFast(num,faces); // グローを元に戻す
}
}
}
タッチしたプリムが持つ面の数をllGetLinkNumberOfSidesで調べて各面のグローを記憶させるので、元々グローを設定したプリムがあっても支障が出ません。あとllSetLinkPrimitiveParamsは、llSetLinkPrimitiveParamsFastにするとノーウェイトでグローが視認できなかったので使用してます。(llSleep入れて調整してもよかったんですが)
スクリプトをオブジェクトの親プリムに入れてください。オーナーがタッチしたときにタッチされたプリムがグローで光って、オーナーのチャットにリンク番号が表示されます。
0 件のコメント:
コメントを投稿