2007年07月25日
リファレンス【GetP-GetR】
llGetP・・・からllGetR・・・の関数リファレンスです。
llGetParcelDetails
llGetParcelFlags
llGetParcelMaxPrims
llGetParcelPrimCount
llGetParcelPrimOwners
llGetPermissions
llGetPermissionsKey
llGetPos
llGetPrimitiveParams
llGetRegionCorner
llGetRegionFlags
llGetRegionFPS
llGetRegionName
llGetRegionTimeDilation
llGetRootPosition
llGetRootRotation
llGetRot
llGetParcelDetails
list llGetParcelDetails(vector pos, list details)
posで示される位置の土地の情報を得る。
得られる情報は名称、説明、オーナーUUID、グループUUID、面積の5つ。
引数detailsには以下の値をリストにして指定する。
以下の例は現在位置の土地名と面積を表示する。
llGetParcelFlags
integer llGetParcelFlags(vector pos)
posで示される位置の土地の設定内容を得る。
設定内容とは「飛行可」「プッシュ可」等の土地ごとに設定されているルールのことを指す。
戻り値は以下の値を含むビットフィールドである。
例えば以下のコードは現在位置が飛行可能かどうかを判定する。
llGetParcelMaxPrims
integer llGetParcelMaxPrims(vector pos, integer sim_wide)
引数posで指定された位置の土地のprim限界数を得る。
引数sim_wideにTRUEを指定するとSIMのprim限界数、FALSEの場合は分割管理された土地の限界数を得ることができる。
llGetParcelPrimCount
integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)
引数posで指定された位置の土地に存在するprimの数を得る。
土地オーナーのprim数、グループのprim数など、引数categoryを指定することで種別ごとのカウントが可能。
引数sim_wideにTRUEを指定するとSIM全体のprim数、FALSEの場合は分割管理された土地に存在するprim数を得ることができる。
引数categoryには以下の値を指定可能である。
llGetParcelPrimOwners
list llGetParcelPrimOwners(vector pos)
引数posで指定された位置の土地に存在するprimのオーナーUUID及び所有prim数のリストを得る。
リストは以下の形式で返される。
[key owner1, integer prim_count1, key owner2, integer prim_count2, .....]
オーナーのUUIDと所有数が繰り返し並んでいる形である。
なおリストに返るオーナーは100人までらしいので、土地上に100人以上の異なるオーナーのprimがあった場合は全員の情報を得られないようだ。
そんな物凄い状況の土地に縁がないため本当かどうかはわからないが(^^;
llGetPermissions
integer llGetPermissions()
現在取得しているパーミッションを得る。
戻り値はビットフィールドになっているので以下の定数を使って&演算を行い、必要なパーミッションが取得されているかどうかをチェックする。
上記「対応する関数」に記載されている関数を使用する際には該当するパーミッションを取得しなければならない。
例えばllGiveMoney関数を使用する際には、以下のようにしてパーミッションを確認する。
パーミッションを取得するにはllRequestPermissions関数を使用する。
誰に対するパーミッションを取得しているかはllGetPermissionsKey関数を使用して確認する。
llGetPermissionsKey
key llGetPermissionsKey()
現在取得しているパーミッションの対象者UUIDを返す。
戻り値は誰に対するパーミッションを取得しているかを示すUUIDである。
llGetPermissions関数を使用すると現在取得しているパーミッションを得ることができるが、例えばアニメーション実行権限を得ているからと言って、その権限が誰に対して有効なのかはわからない。
パーミッションは直前に呼び出されたllRequestPermissions関数で指定したアバターに対しての権限である。
例えばタッチしたときにアニメーションを実行するような仕組みを考えたとき、アニメーションのパーミッションが正しく取得されているかどうかを調べるには、タッチした人に対するパーミッションを保持しているかどうか以下のようにして判定する。
パーミッションがない場合はllRequestPermissions関数を使用して取得しなければならない。
llGetPos
vector llGetPos()
primの現在位置を返す。
戻り値はSIM上の座標を示すvector値である。
この関数がリンクオブジェクトの子primで使用された場合、戻り値はその子primのワールド座標である。
ルートの位置ではないので注意。
ルートprimに対する子primの相対座標を取得したい場合はllGetLocalPos関数を使用する。
子prim内のLSLからルートprimの座標を取得したい場合はllGetRootPosition関数を使用する。
なお、アタッチメントにおいてこの関数が使用された場合は、primの位置ではなく、アバターの位置を返す。
llGetPrimitiveParams
list llGetPrimitiveParams(list params)
primの属性値を返す。
引数paramsには取得したい属性のリストを指定する。
戻り値は引数に指定した属性に応じたリスト型のデータとなる。
基本的に、buildツールを使って指定可能なprimの設定値は全てこの関数を使用して取得できる。
また、この関数の戻り値を使ってllSetPrimitiveParams関数を実行すると、buildツールと同様にprimを編集することが可能である。
これはつまりbuildの自動化が実現できることを意味する。
鏡面コピースクリプトなどは、この関数を使ってコピー元のprimの属性値を取得し、必要なパラメータに鏡面変換をかけた後、llSetPrimitiveParams関数でコピー後のprimを形成する。
引数には以下のようなリストを指定する。
各属性値の詳しい内容についてはllSetPrimitiveParams関数の説明を参照。
引数には複数のパラメータの組み合わせを指定することが可能である。
例えば、物理属性とtemp属性、さらにファントム属性をまとめて確認したい場合は、引数リストに
[PRIM_PHYSICS,PRIM_TEMP_ON_REZ,PRIM_PHANTOM]
を指定する。
llGetRegionCorner
vector llGetRegionCorner()
グローバル座標におけるSIMの南西隅の座標を返す。
グローバル座標系とは全SIMが展開されている座標系のこと。
通常オブジェクトの位置指定などにはSIM内の座標が使用されるが、このllGetRegionCorner関数の戻り値+SIM内の座標を使用するとグローバル座標系における位置を扱うことができる。
SIMを越えて運行する乗り物などを作る際にはグローバル座標系を利用した位置管理が有用になるだろう(やったことないです。っていうかSIM複数なんて自由に扱える立場にありませんw)。
llGetRegionFlags
integer llGetRegionFlags()
SIMの設定内容を得る。
設定内容とは「太陽の位置固定」とか「サンドボックス」等のSIMごとに設定されているルールのことを指す。
戻り値は以下の値を含むビットフィールドである。
SIM全体ではなく個々の土地の設定内容を調べるにはllGetParcelFlags関数を使う。
llGetRegionFPS
float llGetRegionFPS()
SIMのFPSを返す。
FPSとはFrames per Secondの略で、1秒間に処理されるフレーム数のことである。
数字が高いほど高速に処理されていることになる(最高で45FPSらしい)。
FPSが低いということは、1秒間あたりの処理量が少ないということであるから、SLの動作が遅くなると考えてよい。
タッチしてもオブジェクトがすぐには反応しない等、いわゆる「ラグい」状態のときにはFPSが低くなっている可能性が高い。
例えば、FPSが一定値以下になったら動作を止めるような仕組みを実装しておくと、ラグいときには無駄な負荷をかけない賢いオブジェクトが作れたりもする。
ただし、あらゆるラグの原因が全てサーバーの処理能力が低下しているためというわけではない。
FPSが高いにも関わらずラグいようなときには、ネットワーク負荷など、別の要因が考えられる。
llGetRegionName
string llGetRegionName()
SIMの名前を返す。
名前以外の情報(SIMが上がっているかどうかとか)を得る場合はllRequestSimulatorData関数を使用する。
llGetRegionTimeDilation
float llGetRegionTimeDilation()
SIMの処理速度を判断するためのパーセンテージを返す。
戻り値は0.0~1.0の小数である。
1.0は処理遅延が発生していないことを示す。
0.0であれば完全に処理が止まっている(この関数自体返ってこない気がするw)。
0.5とかなら、通常の半分程度の戦闘力しか発揮していない状態ということになる。
llGetRegionFPS関数とともに、SIMの稼働状況を確認するために使われる関数である。
llGetRootPosition
vector llGetRootPosition()
ルートprimの位置を返す。
アタッチメントで使用された場合はアバターの位置を返す。
llGetRootRotation
rotation llGetRootRotation()
ルートprimの回転値を返す。
llGetRot
rotation llGetRot()
primの回転値を返す。
アタッチメントで使用された場合はアバターの回転を返す。
アタッチ位置に対する相対的な回転を得たい場合はllGetLocalRotを使用する。
llGetParcelFlags
llGetParcelMaxPrims
llGetParcelPrimCount
llGetParcelPrimOwners
llGetPermissions
llGetPermissionsKey
llGetPos
llGetPrimitiveParams
llGetRegionCorner
llGetRegionFlags
llGetRegionFPS
llGetRegionName
llGetRegionTimeDilation
llGetRootPosition
llGetRootRotation
llGetRot
llGetParcelDetails
list llGetParcelDetails(vector pos, list details)
posで示される位置の土地の情報を得る。
得られる情報は名称、説明、オーナーUUID、グループUUID、面積の5つ。
引数detailsには以下の値をリストにして指定する。
定数名 | 値 | 意味 | 文字長 | 戻り値の型 |
PARCEL_DETAILS_NAME | 0 | 土地の名称 | 63 | string |
PARCEL_DETAILS_DESC | 1 | 土地の説明 | 127 | string |
PARCEL_DETAILS_OWNER | 2 | 土地オーナーのUUID | (36) | key |
PARCEL_DETAILS_GROUP | 3 | 土地グループのUUID | (36) | key |
PARCEL_DETAILS_AREA | 4 | 面積(sqm) | (5) | integer |
以下の例は現在位置の土地名と面積を表示する。
default{
state_entry(){
list ret = llGetParcelDetails(llGetPos(), [
PARCEL_DETAILS_NAME,
PARCEL_DETAILS_DESC,
PARCEL_DETAILS_OWNER,
PARCEL_DETAILS_GROUP,
PARCEL_DETAILS_AREA
]);
string ParcelName = llList2String(ret, 0);
string ParcelDesc = llList2String(ret, 1);
key ParcelOwner = llList2Key(ret, 2);
key ParcelGroup = llList2Key(ret, 3);
integer ParcelArea = llList2Integer(ret, 4);
llSay(0,"Parcel:" + ParcelName + "(" + (string)ParcelArea + "sqm)");
}
}
llGetParcelFlags
integer llGetParcelFlags(vector pos)
posで示される位置の土地の設定内容を得る。
設定内容とは「飛行可」「プッシュ可」等の土地ごとに設定されているルールのことを指す。
戻り値は以下の値を含むビットフィールドである。
定数名 | 値(16進数) | 値(10進数) | 説明 |
PARCEL_FLAG_ALLOW_FLY | 0x1 | 1 | 飛行許可 |
PARCEL_FLAG_ALLOW_SCRIPTS | 0x2 | 2 | スクリプト許可 |
PARCEL_FLAG_ALLOW_LANDMARK | 0x8 | 8 | ランドマーク作成許可 |
PARCEL_FLAG_ALLOW_TERRAFORM | 0x10 | 16 | 土地編集許可 |
PARCEL_FLAG_ALLOW_DAMAGE | 0x20 | 32 | ダメージ有効 |
PARCEL_FLAG_ALLOW_CREATE_OBJECTS | 0x40 | 64 | ビルド許可 |
PARCEL_FLAG_USE_ACCESS_GROUP | 0x100 | 256 | グループメンバーのみ立ち入り可 |
PARCEL_FLAG_USE_ACCESS_LIST | 0x200 | 512 | アクセスリスト記載者のみ立ち入り可 |
PARCEL_FLAG_USE_BAN_LIST | 0x400 | 1024 | バンリスト有効 |
PARCEL_FLAG_USE_LAND_PASS_LIST | 0x800 | 2048 | パスリスト有効 |
PARCEL_FLAG_LOCAL_SOUND_ONLY | 0x8000 | 32768 | |
PARCEL_FLAG_RESTRICT_PUSHOBJECT | 0x200000 | 2097152 | プッシュ禁止 |
PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY | 0x8000000 | 134217728 | オブジェクトrez許可 |
PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY | 0x10000000 | 268435456 | グループのみrez許可 |
PARCEL_FLAG_ALLOW_GROUP_SCRIPTS | 0x02000000 | 268435456 | グループのみスクリプト許可 |
PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS | 0x04000000 | 268435456 | グループのみビルド許可 |
定数不明 | 0x20000000 | 268435456 | ボイスチャット有効 |
例えば以下のコードは現在位置が飛行可能かどうかを判定する。
default{
touch_start(integer detected){
integer flags = llGetParcelFlags(llGetPos ());
if (PARCEL_FLAG_ALLOW_FLY & flags){
llOwnerSay ("You can fly!");
}else{
llOwnerSay ("You can't fly...");
}
}
}
llGetParcelMaxPrims
integer llGetParcelMaxPrims(vector pos, integer sim_wide)
引数posで指定された位置の土地のprim限界数を得る。
引数sim_wideにTRUEを指定するとSIMのprim限界数、FALSEの場合は分割管理された土地の限界数を得ることができる。
llGetParcelPrimCount
integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)
引数posで指定された位置の土地に存在するprimの数を得る。
土地オーナーのprim数、グループのprim数など、引数categoryを指定することで種別ごとのカウントが可能。
引数sim_wideにTRUEを指定するとSIM全体のprim数、FALSEの場合は分割管理された土地に存在するprim数を得ることができる。
引数categoryには以下の値を指定可能である。
定数名 | 値 | 説明 |
PARCEL_COUNT_TOTAL | 0 | 全てのprimの数(ただしtempオブジェクトはカウントされない) |
PARCEL_COUNT_OWNER | 1 | 土地オーナー所有のprimの数 |
PARCEL_COUNT_GROUP | 2 | 土地グループ所有のprimの数 |
PARCEL_COUNT_OTHER | 3 | オーナー以外が所有しているprimの数 |
PARCEL_COUNT_SELECTED | 4 | 選択中または座っているprimの数 |
PARCEL_COUNT_TEMP | 5 | tempオブジェクトのprim数 |
llGetParcelPrimOwners
list llGetParcelPrimOwners(vector pos)
引数posで指定された位置の土地に存在するprimのオーナーUUID及び所有prim数のリストを得る。
リストは以下の形式で返される。
[key owner1, integer prim_count1, key owner2, integer prim_count2, .....]
オーナーのUUIDと所有数が繰り返し並んでいる形である。
なおリストに返るオーナーは100人までらしいので、土地上に100人以上の異なるオーナーのprimがあった場合は全員の情報を得られないようだ。
そんな物凄い状況の土地に縁がないため本当かどうかはわからないが(^^;
llGetPermissions
integer llGetPermissions()
現在取得しているパーミッションを得る。
戻り値はビットフィールドになっているので以下の定数を使って&演算を行い、必要なパーミッションが取得されているかどうかをチェックする。
定数名 | 説明 | 対応する関数 |
PERMISSION_DEBIT | L$の支払い権限 | llGiveMoney |
PERMISSION_TAKE_CONTROLS | キー操作取得の権限 | llTakeControls、llReleaseControls |
PERMISSION_TRIGGER_ANIMATION | アニメーション実行権限 | llStartAnimation、llStopAnimation |
PERMISSION_ATTACH | アタッチ制御権限 | llAttachToAvatar、llDetachFromAvatar |
PERMISSION_CHANGE_LINKS | リンク制御権限 | llCreateLink、llBreakLink、llBreakAllLinks |
PERMISSION_TRACK_CAMERA | カメラ位置取得権限 | llGetCameraPos、llGetCameraRot |
PERMISSION_CONTROL_CAMERA | カメラ制御権限 | llSetCameraParams、llClearCameraParams |
上記「対応する関数」に記載されている関数を使用する際には該当するパーミッションを取得しなければならない。
例えばllGiveMoney関数を使用する際には、以下のようにしてパーミッションを確認する。
integer start_animation(string animetion_name){
integer perm = llGetPermissions();
if (perm & PERMISSION_TRIGGER_ANIMATION) {
llStartAnimation(animetion_name);
return TRUE;
}
return FALSE;
}
パーミッションを取得するにはllRequestPermissions関数を使用する。
誰に対するパーミッションを取得しているかはllGetPermissionsKey関数を使用して確認する。
llGetPermissionsKey
key llGetPermissionsKey()
現在取得しているパーミッションの対象者UUIDを返す。
戻り値は誰に対するパーミッションを取得しているかを示すUUIDである。
llGetPermissions関数を使用すると現在取得しているパーミッションを得ることができるが、例えばアニメーション実行権限を得ているからと言って、その権限が誰に対して有効なのかはわからない。
パーミッションは直前に呼び出されたllRequestPermissions関数で指定したアバターに対しての権限である。
例えばタッチしたときにアニメーションを実行するような仕組みを考えたとき、アニメーションのパーミッションが正しく取得されているかどうかを調べるには、タッチした人に対するパーミッションを保持しているかどうか以下のようにして判定する。
default {
touch_start(integer detected){
if (llGetPermissionsKey() == llDetectedKey(0)){
integer perm = llGetPermissions();
if (perm & PERMISSION_TRIGGER_ANIMATION) {
llStartAnimation("hogehoge");
}
}
}
}
パーミッションがない場合はllRequestPermissions関数を使用して取得しなければならない。
llGetPos
vector llGetPos()
primの現在位置を返す。
戻り値はSIM上の座標を示すvector値である。
この関数がリンクオブジェクトの子primで使用された場合、戻り値はその子primのワールド座標である。
ルートの位置ではないので注意。
ルートprimに対する子primの相対座標を取得したい場合はllGetLocalPos関数を使用する。
子prim内のLSLからルートprimの座標を取得したい場合はllGetRootPosition関数を使用する。
なお、アタッチメントにおいてこの関数が使用された場合は、primの位置ではなく、アバターの位置を返す。
default {
touch_start(integer detected) {
llSay(0, "Positin:" + (string)llGetPos());
}
}
llGetPrimitiveParams
list llGetPrimitiveParams(list params)
primの属性値を返す。
引数paramsには取得したい属性のリストを指定する。
戻り値は引数に指定した属性に応じたリスト型のデータとなる。
基本的に、buildツールを使って指定可能なprimの設定値は全てこの関数を使用して取得できる。
また、この関数の戻り値を使ってllSetPrimitiveParams関数を実行すると、buildツールと同様にprimを編集することが可能である。
これはつまりbuildの自動化が実現できることを意味する。
鏡面コピースクリプトなどは、この関数を使ってコピー元のprimの属性値を取得し、必要なパラメータに鏡面変換をかけた後、llSetPrimitiveParams関数でコピー後のprimを形成する。
引数には以下のようなリストを指定する。
引数 | 説明 | 戻り値 |
[PRIM_BUMP_SHINY, integer face] | face面のバンプマップとシャイニングの設定を得る | [integer shiny, integer bump] |
[PRIM_COLOR, integer face] | face面の色と透明度を得る | [vector color, float alpha] |
[PRIM_FLEXIBLE] | フレキシブルの設定値を得る | [integer TRUE/FALSE, integer softness, float gravity, float friction, float wind, float tension, vector force] |
[PRIM_FULLBRIGHT, integer face] | face面のフルブライト設定を得る | [integer TRUE/FALSE] |
[PRIM_MATERIAL] | マテリアル設定を得る | [integer material] |
[PRIM_PHANTOM] | ファントムかどうかを得る | [integer TRUE/FALSE] |
[PRIM_PHYSICS] | 物理オブジェクトかどうかを得る | [integer TRUE/FALSE] |
[PRIM_POINT_LIGHT] | ライトの設定値を得る | [integer TRUE/FALSE, vector color, float intensity, float radius, float falloff] |
[PRIM_POSITION] | 位置を得る | [vector position] |
[PRIM_ROTATION] | 回転を得る | [rotation rot] |
[PRIM_SIZE] | サイズを得る | [vector size] |
[PRIM_TEMP_ON_REZ] | tempオブジェクトかどうかを得る | [integer TRUE/FALSE] |
[PRIM_TYPE] | primの基本設定値を得る | [integer primtype,...prim計上によって戻り値リストの配列は異なる] |
[PRIM_TEXGEN, integer face] | face面のテクスチャマッピングモードを得る | [integer texgen] |
[PRIM_TEXTURE, integer face] | face面のテクスチャ情報を得る | [( string name OR key uuid ), vector repeats, vector offsets, float rotation] |
各属性値の詳しい内容についてはllSetPrimitiveParams関数の説明を参照。
引数には複数のパラメータの組み合わせを指定することが可能である。
例えば、物理属性とtemp属性、さらにファントム属性をまとめて確認したい場合は、引数リストに
[PRIM_PHYSICS,PRIM_TEMP_ON_REZ,PRIM_PHANTOM]
を指定する。
default {
touch_start(integer detected){
list p = llGetPrimitiveParams([PRIM_PHYSICS,PRIM_TEMP_ON_REZ,PRIM_PHANTOM]);
string msg;
if (llList2Integer(p,0)){
msg = "PHYSICS:ON / ";
}else{
msg = "PHYSICS:OFF / ";
}
if (llList2Integer(p,1)){
msg = "TEMP:ON / ";
}else{
msg = "TEMP:OFF / ";
}
if (llList2Integer(p,2)){
msg = "PHANTOM:ON";
}else{
msg = "PHANTOM:OFF";
}
llSay(0, msg);
}
}
llGetRegionCorner
vector llGetRegionCorner()
グローバル座標におけるSIMの南西隅の座標を返す。
グローバル座標系とは全SIMが展開されている座標系のこと。
通常オブジェクトの位置指定などにはSIM内の座標が使用されるが、このllGetRegionCorner関数の戻り値+SIM内の座標を使用するとグローバル座標系における位置を扱うことができる。
SIMを越えて運行する乗り物などを作る際にはグローバル座標系を利用した位置管理が有用になるだろう(やったことないです。っていうかSIM複数なんて自由に扱える立場にありませんw)。
llGetRegionFlags
integer llGetRegionFlags()
SIMの設定内容を得る。
設定内容とは「太陽の位置固定」とか「サンドボックス」等のSIMごとに設定されているルールのことを指す。
戻り値は以下の値を含むビットフィールドである。
定数名 | 値(16進数) | 値(10進数) | 説明 |
REGION_FLAG_ALLOW_DAMAGE | 0x1 | 1 | ダメージ有効 |
REGION_FLAG_FIXED_SUN | 0x10 | 16 | 太陽の位置固定 |
REGION_FLAG_BLOCK_TERRAFORM | 0x40 | 64 | 地形編集不可 |
REGION_FLAG_SANDBOX | 0x100 | 256 | サンドボックス |
REGION_FLAG_DISABLE_COLLISIONS | 0x1000 | 4096 | 衝突判定無効 |
REGION_FLAG_DISABLE_PHYSICS | 0x4000 | 16384 | 物理オブジェクト無効 |
REGION_FLAG_BLOCK_FLY | 0x80000 | 524288 | 飛行禁止 |
REGION_FLAG_ALLOW_DIRECT_TELEPORT | 0x100000 | 1048576 | テレポート可 |
REGION_FLAG_RESTRICT_PUSHOBJECT | 0x400000 | 4194304 | プッシュ禁止 |
SIM全体ではなく個々の土地の設定内容を調べるにはllGetParcelFlags関数を使う。
llGetRegionFPS
float llGetRegionFPS()
SIMのFPSを返す。
FPSとはFrames per Secondの略で、1秒間に処理されるフレーム数のことである。
数字が高いほど高速に処理されていることになる(最高で45FPSらしい)。
FPSが低いということは、1秒間あたりの処理量が少ないということであるから、SLの動作が遅くなると考えてよい。
タッチしてもオブジェクトがすぐには反応しない等、いわゆる「ラグい」状態のときにはFPSが低くなっている可能性が高い。
例えば、FPSが一定値以下になったら動作を止めるような仕組みを実装しておくと、ラグいときには無駄な負荷をかけない賢いオブジェクトが作れたりもする。
ただし、あらゆるラグの原因が全てサーバーの処理能力が低下しているためというわけではない。
FPSが高いにも関わらずラグいようなときには、ネットワーク負荷など、別の要因が考えられる。
llGetRegionName
string llGetRegionName()
SIMの名前を返す。
名前以外の情報(SIMが上がっているかどうかとか)を得る場合はllRequestSimulatorData関数を使用する。
llGetRegionTimeDilation
float llGetRegionTimeDilation()
SIMの処理速度を判断するためのパーセンテージを返す。
戻り値は0.0~1.0の小数である。
1.0は処理遅延が発生していないことを示す。
0.0であれば完全に処理が止まっている(この関数自体返ってこない気がするw)。
0.5とかなら、通常の半分程度の戦闘力しか発揮していない状態ということになる。
llGetRegionFPS関数とともに、SIMの稼働状況を確認するために使われる関数である。
llGetRootPosition
vector llGetRootPosition()
ルートprimの位置を返す。
アタッチメントで使用された場合はアバターの位置を返す。
llGetRootRotation
rotation llGetRootRotation()
ルートprimの回転値を返す。
llGetRot
rotation llGetRot()
primの回転値を返す。
アタッチメントで使用された場合はアバターの回転を返す。
アタッチ位置に対する相対的な回転を得たい場合はllGetLocalRotを使用する。
タグ :GET系関数
Posted by Miz at 16:52│Comments(6)
│リファレンス
この記事へのコメント
最近、セカンドライフをはじめさせていただいたので、制作活動もはじめました。今日、ハイヒールを作ったのですが、人間の皮膚をかすめてしまいます。見本にした、ハイヒールには、invisibleの名前で、何かスクリプトが入っているようです。ヒールの部分に透明のテキスチャーを貼り付けて、ほぼ完成しているのですが。。。アバターの皮膚より優先してオブジェクトが見えるスクリプトがあるのでしょうか?
Posted by Miyu jacobus at 2007年07月26日 16:24
>Miyu jacobusさん
えと、それは俗にインビジプリムと言って、「プリム内部のものを不可視にする」プリムです。
その正体はあるテクスチャを特定のオフセット値で貼り付けたものです。
ハイヒールに入っているというinvisibleの名前のスクリプトは、特定のテクスチャを貼り付けるためのスクリプトだと思います。
言い換えるなら「インビジプリム」を作り出すためのスクリプトです。
アバターの体が見えなくなるのはスクリプトの直接的な機能ではありません。
特殊な透明テクスチャを利用し、言わば「3Dグラフィックの盲点」を突くようにして内部のものを不可視にしています。
あくまでもテクスチャを使った「トリック」です。
私はインビジプリムを利用してモノ作りをしたことがないので、あまり具体的なアドバイスができず申し訳ありませんが・・・。
tinyアバターを作っている方やカツラ屋さん、あるいはハイヒール職人さんなら普段利用することが多いので詳しいことをご存知かと思います。
フリーで入手可能なインビジプリムもありますので、「インビジプリム」あたりのキーワードでググってみると良いですよ(^^
えと、それは俗にインビジプリムと言って、「プリム内部のものを不可視にする」プリムです。
その正体はあるテクスチャを特定のオフセット値で貼り付けたものです。
ハイヒールに入っているというinvisibleの名前のスクリプトは、特定のテクスチャを貼り付けるためのスクリプトだと思います。
言い換えるなら「インビジプリム」を作り出すためのスクリプトです。
アバターの体が見えなくなるのはスクリプトの直接的な機能ではありません。
特殊な透明テクスチャを利用し、言わば「3Dグラフィックの盲点」を突くようにして内部のものを不可視にしています。
あくまでもテクスチャを使った「トリック」です。
私はインビジプリムを利用してモノ作りをしたことがないので、あまり具体的なアドバイスができず申し訳ありませんが・・・。
tinyアバターを作っている方やカツラ屋さん、あるいはハイヒール職人さんなら普段利用することが多いので詳しいことをご存知かと思います。
フリーで入手可能なインビジプリムもありますので、「インビジプリム」あたりのキーワードでググってみると良いですよ(^^
Posted by Miz at 2007年07月26日 21:34
いつも参考にさせていただいています。
SLは4月から始めて、スクリプトは6月くらいから始めました。
最初の取っ掛かりの所で、分かり易く解説してくれる資料がなくて、足踏みしていたのですが、
このサイトを見つけて、ようやく始めることが出来ました。
噛み砕いた説明で、経験の無い自分にも本当に分かり易くて助かっています。
書き込み量もハンパじゃなく、いつも凄いなと思ってます。
お世話になりっ放しですが、これからも頑張ってください!
SLは4月から始めて、スクリプトは6月くらいから始めました。
最初の取っ掛かりの所で、分かり易く解説してくれる資料がなくて、足踏みしていたのですが、
このサイトを見つけて、ようやく始めることが出来ました。
噛み砕いた説明で、経験の無い自分にも本当に分かり易くて助かっています。
書き込み量もハンパじゃなく、いつも凄いなと思ってます。
お世話になりっ放しですが、これからも頑張ってください!
Posted by 独楽 at 2007年08月09日 12:38
スクリプトを書くときはいつも参考にさせて頂いてます!
llGetParcelFlags ですが、2つほど不足の定数を見つけたので、
報告させて頂きます。
PARCEL_FLAG_ALLOW_GROUP_SCRIPTS (0x02000000)
PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS (0x04000000)
あと、定数は用意されていないようですが、
SL内で試してみたところ、
ボイスチャットのフラグも取得できました。
値は、0x20000000 です。
llGetParcelFlags ですが、2つほど不足の定数を見つけたので、
報告させて頂きます。
PARCEL_FLAG_ALLOW_GROUP_SCRIPTS (0x02000000)
PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS (0x04000000)
あと、定数は用意されていないようですが、
SL内で試してみたところ、
ボイスチャットのフラグも取得できました。
値は、0x20000000 です。
Posted by natsu at 2007年08月15日 18:33
>natsuさん
ご指摘ありがとうございます。
遅くなりましたが修正しておきました(^^
ご指摘ありがとうございます。
遅くなりましたが修正しておきました(^^
Posted by Miz at 2007年08月20日 14:30
Mizさん、本当にありがとうございました^^ コメントが大変おそくなってしまいもうしわけございませんでした。おかげさまで、制作活動が順調に進み、SLを満喫できています
改めてありがとうございましたぁ^^
改めてありがとうございましたぁ^^
Posted by Miyu Jacubus at 2007年08月31日 04:15