2010年05月01日
multi sit
別のブログで記事を見つけたのですが
非常に見にくいかんじだったのでこちらで保存
//1プリムの定位置に2人座れる
listpos=[<0.4,-0.5,0.4>,<0.4,0.5,0.4>];//座る位置のリスト(1人目、2人目)
listav;//座ってるアバターのキーリスト用
vectorang=<0,0,0>;//座った角度
default
{
state_entry()
{
llSitTarget(<0,0,0.5>,llEuler2Rot(ang*DEG_TO_RAD)); //座る位置の初期値
integeri;
for(i=0;i
av+=[NULL_KEY];}}changed(integerchange){if(change&CHANGED_LINK){ //リンクが変化したら
integeri=llGetNumberOfPrims(); //リンクしてるプリムの数
keyid=llGetLinkKey(i); //座った(リンクした)アバターのキー取得
if(id){integerj=llListFindList(av,[NULL_KEY]); //空席チェック
if(~j){ //空いてたら
av=llListReplaceList(av,[id],j,j); //アバターのキーをセット
vectorv=llList2Vector(pos,j); //空いてた席の座る位置
v.z+=0.35; //Z方向に0.35加算
//座った位置を移動
llSetLinkPrimitiveParams(i,[PRIM_POSITION,v,PRIM_ROTATION,ZERO_ROTATION/llGetRot()*llEuler2Rot(ang*DEG_TO_RAD)]);
}else{ //空席がないとき
if(llListFindList(av,[id])<0)llUnSit(id); //キーリストになかったら立たせる
}
}
listl;
for(i;i>1;i--){ //子プリムのキーをリストアップ
l+=[llGetLinkKey(i)];
}
for(i=0;i
id=llList2Key(av,i);if(llListFindList(l,[id])<0)av=llListReplaceList(av,[NULL_KEY],i,i);
}
}
}
}
--------------------------------ここまで---------------------
半角スペースをすべてTABにするといけるとおもうけど
どうでしょね
非常に見にくいかんじだったのでこちらで保存
//1プリムの定位置に2人座れる
listpos=[<0.4,-0.5,0.4>,<0.4,0.5,0.4>];//座る位置のリスト(1人目、2人目)
listav;//座ってるアバターのキーリスト用
vectorang=<0,0,0>;//座った角度
default
{
state_entry()
{
llSitTarget(<0,0,0.5>,llEuler2Rot(ang*DEG_TO_RAD)); //座る位置の初期値
integeri;
for(i=0;i
integeri=llGetNumberOfPrims(); //リンクしてるプリムの数
keyid=llGetLinkKey(i); //座った(リンクした)アバターのキー取得
if(id){integerj=llListFindList(av,[NULL_KEY]); //空席チェック
if(~j){ //空いてたら
av=llListReplaceList(av,[id],j,j); //アバターのキーをセット
vectorv=llList2Vector(pos,j); //空いてた席の座る位置
v.z+=0.35; //Z方向に0.35加算
//座った位置を移動
llSetLinkPrimitiveParams(i,[PRIM_POSITION,v,PRIM_ROTATION,ZERO_ROTATION/llGetRot()*llEuler2Rot(ang*DEG_TO_RAD)]);
}else{ //空席がないとき
if(llListFindList(av,[id])<0)llUnSit(id); //キーリストになかったら立たせる
}
}
listl;
for(i;i>1;i--){ //子プリムのキーをリストアップ
l+=[llGetLinkKey(i)];
}
for(i=0;i
}
}
}
}
--------------------------------ここまで---------------------
半角スペースをすべてTABにするといけるとおもうけど
どうでしょね