リファレンス【GetM-GetO】

Miz

2007年07月14日 12:15


llGetM・・・からllGetO・・・の関数リファレンスです。
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内になければならない。

リファレンス