llGetMass
llGetNextEmail
llGetNotecardLine
llGetNumberOfNotecardLines
llGetNumberOfPrims
llGetNumberOfSides
llGetObjectDesc
llGetObjectMass
llGetObjectName
llGetObjectPermMask
llGetObjectPrimCount
llGetOmega
llGetOwner
llGetOwnerKey
llGetMass
float llGetMass()
オブジェクトの質量を得る。
リンクされたオブジェクトのルートで実行した場合はオブジェクト全体の質量を返す。
子primで実行した場合、そのprimの重さを返す。
また、アタッチメントで実行した場合はアバターの体重を得ることができる。
他のオブジェクトの質量を調べるには
llGetObjectMass関数を使う。
なお、これらMass系関数で返される質量の単位はLindogram(リンドグラム:Lg)と慣例的に呼ばれることがあるらしいが、あまり耳にしない。
llGetNextEmail
llGetNextEmail(string address, string subject)
郵便受けに溜まっている次のメールを取得するよう指示を出す。
メールがあった場合はemailイベントが発生し、そのメールは郵便受けから取り出される(削除される)。
この関数の詳細な使い方については
Emailの送受信の記事を参照。
llGetNotecardLine
key llGetNotecardLine(string name, integer line)
オブジェクトのコンテンツ内にあるノートカードnameのline行目を読み取るよう要求を出し、問い合わせ番号(key型)を返す。
要求の結果はdataserverイベントにて受け取ることができる。
この関数の詳細な使い方については
ノートを使おう(初級スクリプト第十二回)の記事を参照。
llGetNumberOfNotecardLines
key llGetNumberOfNotecardLines(string name)
nameに指定した名前のノートカードの行数を調べるよう要求を出し、問い合わせ番号(key型)を返す。
要求の結果はdataserverイベントにて受け取ることができる。
指定したノートカードはオブジェクトのコンテンツ内になければならない。
dataserverイベントでは調べた結果がstring型の引数で渡されてくるが、これをinteger型にキャストすれば行数として扱うことができる。
以下の例はノートカード"hogehoge"の行数を調べる。
default {
state_entry() {
llGetNumberOfNotecardLines("hogehoge");
}
dataserver(key queryid, string data) {
integer lines = (integer)data;
llSay(0, "This notecard has " + (string)lines + " lines.");
}
}
ノートカードの読取については
ノートを使おう(初級スクリプト第十二回)の記事を参照。
llGetNumberOfPrims
integer llGetNumberOfPrims()
スクリプトを実行中のオブジェクト(自分自身)のprimの数を返す。
オブジェクトにアバターが座っていた場合は、1アバター=1primとしてカウントされる。
llGetNumberOfSides
integer llGetNumberOfSides()
スクリプトが含まれているprimの面数を返す。
例えばデフォルト状態のキューブであれば6を返すが、パスカットやホロウ(くり抜き)で変形している場合は6以上の面数を返す場合がある。
ホロウの形状によっては見かけ上4面増えるように見えるが、あくまでも1つの面としてカウントされる。
パスカットは2つの面である(パスカット開始面と終了面の2つ)。
また、パスカットやテーパーによる変形で面が消失する場合もある。
例えばキューブにおいてテーパーの値を1や-1にすると四角錐となり、面数は5になる。
llGetObjectDesc
string llGetObjectDesc()
オブジェクトまたはprimの説明(ディスクリプション)を返す。
ディスクリプションとはbuild画面のprim名を編集する欄の下にある説明欄の内容である。
この関数はスクリプトが含まれているprimのディスクリプションを返す。
スクリプトがルートprimに入っている場合はオブジェクトのディスクリプションを返す。
ディスクリプションをスクリプトから書き換えるにはllSetObjectDesc関数を使用する。
llGetObjectMass
float llGetObjectMass(key id)
idに指定されたUUIDのオブジェクトまたはアバターの質量を得る。
同一SIM内に存在する対象のみ有効。
SIM内に存在しないUUIDを指定した場合は0.0が返る。
自分自身の質量を調べるには
llGetMass関数を使う。
llGetObjectName
string llGetObjectName()
オブジェクトまたはprimの名前を返す。
primの名前を返すのは、子primにおいて使用された場合である。
ルートprimで使用された場合はオブジェクト名を返す。
オブジェクトの名前をスクリプトから変更するにはllSetObjectName関数を使う。
llGetObjectPermMask
integer llGetObjectPermMask(integer mask)
オブジェクトの権限を取得する。
引数maskには調べたい権限の対象者を指定する。
定数値説明MASK_BASE 0 基本(現在のオーナーの権限に等しい)MASK_OWNER 1 現在のオーナーの権限MASK_GROUP 2 グループの権限MASK_EVERYONE 3 その他の人々の権限MASK_NEXT 4 次のオーナーの権限
戻り値はビットフィールドになっているので、以下の定数と&演算を行って権限をチェックする。
定数値(16進数)値(整数値)説明PERM_ALL 0x7FFFFFFF 2147483647 Move/Modify/Copy/Transfer(フルパーミッション)PERM_COPY 0x00008000 32768 Copy可能PERM_MODIFY 0x00004000 16384 Modify可能PERM_MOVE 0x00080000 524288 Move可能PERM_TRANSFER 0x00002000 8192 Transfer可能
以下の例は次のオーナーがCopy権限を持っているかどうかを調べる。
default {
state_entry(){
integer perm = llGetObjectPermMask(MASK_NEXT);
if (perm & PERM_COPY){
llSay(0, "Next owner can COPY.");
}else{
llSay(0, "Next owner can't COPY.");
}
}
}
llGetObjectPrimCount
integer llGetObjectPrimCount(key id)
idに指定したUUIDのオブジェクトのprim数を返す。
調査対象のオブジェクトは同一SIM内になければならない。
llGetOmega
vector llGetOmega()
現在の回転速度(ラジアン毎秒)を得る。
戻り値はグローバル座標系に対する回転速度である。
llGetOwner
key llGetOwner()
オブジェクトオーナーのUUIDを返す。
しばしば「オーナーのみが操作可能」な機能を実装する際に利用される。
オーナーがタッチした場合のみ動作する例:
default{
touch_start(integer detected){
if (llDetectedKey(0) == llGetOwner()){
llSay(0,"You are owner.");
}
}
}
llGetOwnerKey
key llGetOwnerKey(key id)
idに指定したUUIDのオブジェクトのオーナーを返す。
調査対象のオブジェクトは同一SIM内になければならない。