LlAttachToAvatarTemp/ja
Jump to navigation
Jump to search
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: llAttachToAvatarTemp( integer attach_point );ユーザーに新しい持ち物を作らないという点を除けば、llAttachToAvatarと同じ規則に従います。デタッチしたり接続を切ったりした場合にはオブジェクトは消滅します。
• integer | attach_point | – | ATTACH_* 定数または適当な値 (下表参照) |
実行するには、llRequestPermissions による PERMISSION_ATTACH 権限が必要です。 ユーザーは一時的に装着されたオブジェクトを '取る' や '下に落とす' ことが出来ない点に注意してください。
- オブジェクトをアタッチしたユーザーが、そのオブジェクトの所有者でないかもしれません。実際、オブジェクトを贈与したり、所有権を移すためにユーザーにオブジェクトを取らせることに使うには、この関数はほとんど役に立ちません。
|
|
警告
- 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
- スクリプトに PERMISSION_ATTACH の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
- いったん PERMISSION_ATTACH 権限が付与されると、スクリプトの中で (例えば、新しい llRequestPermissions 呼び出しなどにより) 権限をはく奪することができません。スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。
- この方法により装着が成功したとき、装着する以前に与えられた権限が、PERMISSION_ATTACHも含めてダンプされます。(可能なセキュリティ対策)
- この方法により装着が成功するまで、それまでに許可された権限は正常のまま保持されます。
- あなたが譲渡の権限を持っていないオブジェクトの中で llAttachToAvatarTemp を使うと、たとえあなた自身へ装着しようとしていたとしても、関数は No permission to transfer エラーで失敗します。
- 装着ポイントには複数のアタッチメントを装着できます。[1]
- 以前はattach_point がふさがっている場合、2つのオブジェクトを同時に同じ装着ポイントに装着することはできず、既にあるオブジェクトが取り外され、新しいアタッチメントが乗っ取りました。
- 頭に (首から上の全ての装着ポイント) 装着されたオブジェクトは、"show attachments in mouselook" が無効になっている場合、一人称視点 (別名 マウスルック) では表示されません。
- attach_point がゼロだがオブジェクトが装着されたことがない場合、デフォルトで右手に装着されます (ATTACH_RHAND)。
- オブジェクトが既に装着されていると、attach_point が異なる 装着ポイント かどうかに関わらず、関数がエラーを出さずに失敗します。
サンプル
//-- rez object on ground, drop in this script, it will request permissions to attach,
//-- and then attach to the left hand if permission is granted. if permission is denied,
//-- then the script complains.
default
{
state_entry()
{
llRequestPermissions( llGetOwner(), PERMISSION_ATTACH );
}
run_time_permissions( integer vBitPermissions )
{
if( vBitPermissions & PERMISSION_ATTACH )
{
llAttachToAvatarTemp( ATTACH_LHAND );
}
else
{
llOwnerSay( "Permission to attach denied" );
}
}
on_rez(integer rez)
{
if(!llGetAttached())
{ //reset the script if it's not attached.
llResetScript();
}
}
attach(key AvatarKey)
{
if(AvatarKey)
{//event is called on both attach and detach, but Key is only valid on attach
integer test = llGetAttached();
if (test) {
llOwnerSay( "The object is attached" );
} else {
llOwnerSay( "The object is not attached");
}
}
}
}
//-- This example can demonstrate ownership transfer of an object on a temporary basis using llAttachToAvatarTemp()
//-- Whoever touches will be asked for permission to attach, and upon granting permission will have the item attach,
//-- But not appear in Inventory.
default
{
touch_start(integer num_touches)
{
llRequestPermissions( llDetectedKey(0), PERMISSION_ATTACH );
}
run_time_permissions( integer vBitPermissions )
{
if( vBitPermissions & PERMISSION_ATTACH )
{
llAttachToAvatarTemp( ATTACH_LHAND );
}
else
{
llOwnerSay( "Permission to attach denied" );
}
}
on_rez(integer rez)
{
if(!llGetAttached())
{ //reset the script if it's not attached.
llResetScript();
}
}
}
関連項目
イベント
• | run_time_permissions | – | 権限取得イベント |
関数
• | llGetPermissions | – | 付与されている権限を取得します | |
• | llGetPermissionsKey | – | 権限を許可したエージェントを取得します | |
• | llRequestPermissions | – | 権限を要求します | |
• | llDetachFromAvatar | – | アバターからオブジェクトを外します | |
• | llGetAttached | – | 装着ポイント番号を取得します |
記事
• | 権限/スクリプト |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。