LlBreakLink/ja
< LlBreakLink
Jump to navigation
Jump to search
Revision as of 03:14, 12 April 2010 by Mako Nozaki (talk | contribs) (Undo revision 850632 by Mako Nozaki (Talk))
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: llBreakLink( integer linknum );タスクと与えられたリンクナンバーをリンク解除します。
• integer | linknum | – | リンク 番号 (0: リンクなし, 1: ルートプリム, >1: 子プリム) または LINK_* フラグ |
実行するには、llRequestPermissions による PERMISSION_CHANGE_LINKS 権限がオーナから与えられなければなりません。
|
|
警告
- 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
- スクリプトに PERMISSION_CHANGE_LINKS の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
- PERMISSION_CHANGE_LINKS がオーナ以外の人から許可され、関数が呼び出されると、 DEBUG_CHANNEL でエラーが叫ばれます。
- いったん PERMISSION_CHANGE_LINKS 権限が付与されると、スクリプトの中で (例えば、新しい llRequestPermissions 呼び出しなどにより) 権限をはく奪することができません。スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。
サンプル
<lsl> //-- requests permission to change links, then breaks the link //-- between the prim its in and the rest of the object, on touch. default{
state_entry(){ llRequestPermissions( llGetOwner(), PERMISSION_CHANGE_LINKS ); } run_time_permissions( integer vBitPermissions ){ if (PERMISSION_CHANGE_LINKS & vBitPermissions){ state sMain; }else{ llResetScript(); } }
}
state sMain{}
touch_start( integer vIntTouched ){ llBreakLink( LINK_THIS ); }
}
</lsl>注意点
リンク番号
オブジェクトを構成するそれぞれのプリムにはアドレスがあります。それがリンク番号です。オブジェクトの特定のプリムにアクセスするには、そのプリムのリンク番号を知らなければなりません。リンク番号はプリムに振られますが、オブジェクトに座っているアバターにも振られます。
- オブジェクトが単一のプリムで構成されていて、アバターが座っていないとき、(ルート)プリムのリンク番号は 0 です。
- しかし、オブジェクトが複数のプリムで構成されていたり、オブジェクトに座っているアバターがいたりすると、ルートプリムのリンク番号は 1 となります。
アバターがオブジェクトに座ると、リンクセットの末尾に追加され、いちばん大きなリンク番号が振られることになります。さらに、アバターがオブジェクトに座っている場合、アバターを立たせないと、プリムのリンク・リンク解除ができません。
プリムやアバターの数え方
オブジェクトのプリムや、プリムに座っているアバターの数を調べるのに、2つの関数があります。
llGetNumberOfPrims()
- プリムと座っているアバターの数を返します。llGetObjectPrimCount(llGetKey())
- オブジェクトのプリムの数だけを返しますが、アタッチメントとなっている場合は 0 を返します。
integer GetPrimCount() { //常にプリムの数だけを返します。
if(llGetAttached())//装着されているか?
return llGetNumberOfPrims();//アバターとプリムの数を返しますが、アタッチメントの上には座れないのでこれでいいです。
return llGetObjectPrimCount(llGetKey());//プリムの数だけを返しますが、アタッチメントの場合ここは通りません。
}
関連項目
イベント
• | run_time_permissions | – | 権限取得イベント |
関数
• | llGetLinkNumber | – | スクリプトが入っているプリムのリンク番号を取得します。 | |
• | llGetPermissions | – | 付与されている権限を取得します | |
• | llGetPermissionsKey | – | 権限を許可したエージェントを取得します | |
• | llRequestPermissions | – | 権限を要求します | |
• | llBreakAllLinks | – | すべてのリンクを解除します |
記事
• | 権限/スクリプト |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。