ソラマメブログ

2007年07月14日

リファレンス【GetM-GetO】

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内になければならない。




タグ :GET系関数

同じカテゴリー(リファレンス)の記事
 リファレンス【M-P】 (2007-09-21 12:15)
 リファレンス【L】 (2007-08-28 13:54)
 リファレンス【GetU-K】 (2007-08-24 15:06)
 リファレンス【GetS-GetT】 (2007-08-13 13:49)
 リファレンス【GetP-GetR】 (2007-07-25 16:52)
 リファレンス【GetG-GetL】 (2007-07-12 12:15)
この記事へのトラックバック
 
SL参入者でしたらご存知の方も多いと思いますが、LSLスクリプトの習得でしたら
SLで楽器ショップとS
LSLスクリプトで困っているあなた・・イヤ同胞にお勧め【Rinsui SL+ Making Blog】at 2007年07月14日 17:56
この記事へのコメント
llGetNextEmail

llGetNextEmail(string address, string subject)

郵便受けに溜まっている次のメールを取得するよう支持を出す。

の「支持」→「指示」でしょうか?
つまらない指摘ですみません
Posted by nyagos kidd at 2007年07月18日 12:48
>nyagos kiddさん

おお、その通りです。間違っておりますね。
さっそく直しておきます。
ご指摘感謝です。
Posted by Miz at 2007年07月18日 14:59
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。