はじめに
セカンドライフ用の関数はたくさんあります。これらはもちろん覚えきれないため、通常何かをしたいときに適時思い浮かぶ単語からSecond Life LSL ポータルの関数 (en, translate) で具体的な使い方を調べると思います。しかし、そもそもどういったことが可能かどうかが分かっていないと、調べるにしても手も足も出ないと思います。
今回セカンドライフのいくつかの関数について、メモ代わりに逆引きの関数を作ってみました。これらの関数があるということさえ知っておけば、次回何か作るときに「あっ!そういえばあの関数あったな!」とスムーズに作れると思います。なお、ここで紹介する関数はあくまで一部であり、偏っていることに注意してください。
zhi-zheng.net さんの 逆引きの関数 もおすすめです。
関数
アバター
llAttachToAvatar
権限があるアバターのインベントリに取り込まれたうえでアイテムを装着させる。スクリプトが入った装着用オブジェクトは、Rez された状態にないといけない。
- 要
PERMISSION_ATTACH
権限
llAttachToAvatarTemp
権限があるアバターのインベントリには表示されないアイテムを装着させる。スクリプトが入った装着用オブジェクトは、Rez された状態にないといけない。装着したものは、アバターが自主的に外せなくなるため注意。
- 要
PERMISSION_ATTACH
権限
llDetachFromAvatar
装着したアイテムを外す。
- 要
PERMISSION_ATTACH
権限
llForceMouselook
座ったアバターを強制的にマウスルックモードにする。
- 利用者は任意でマウスルックモードから戻すことが可能
llGetAgentInfo
アバターが何をしているか。
llGetAgentSize
アバターの大きさを推定して取得する。
llGetAgentLanguage
アバターの言語設定を取得する。
llGetAttached
本オブジェクトがアバターのどの位置に装着されているか取得する。
llGetAttachedList
アバターが装着しているオブジェクトのUUIDを取得する。
- UUIDから様々な情報を取得するには、 llGetObjectDetails
llGetDisplayName
アバターの表示名を取得する。
llGetPermissions
アバターから付与されたパーミッションを取得する。
llGiveInventory
アバターへアイテムをわたす。
llGiveInventoryList
アバターへアイテムを複数一度にわたす。
llTransferLindenDollars
オブジェクトのオーナーからアバターへお金をわたす。llGiveMoney もありますが、成功したか失敗したか分かりませんので使用しないでください。
- 要
PERMISSION_DEBIT
権限
llRequestAgentData
アバターのログイン情報やアカウント作成日などを取得する。
- 取得時には dataserver イベントが発生する
llRequestPermissions
アバターへパーミッションの問い合わせをする。
- 取得時には run_time_permissions イベントが発生する
llTeleportAgent
オブジェクト所有者を指定したランドマークへワープさせる。
llTeleportAgentGlobalCoords
オブジェクト所有者を指定したリージョンの指定した位置へワープさせる。
- 要 PERMISSION_TELEPORT 権限
llTeleportAgentHome
アバターをホームへ強制移動させる。
- 使用者は土地のオーナーでないといけません。
llUnSit
オブジェクトに乗っているアバターを立たせる。
アバターのアニメーション
llGetAnimation
何の動きのアニメーションを使用しているか取得する。
llGetAnimationList
再生中のアニメーションをリストで取得する。
llGetAnimationOverride
指定した動作の時のアニメーション(AO)を取得する。
llSetAnimationOverride
指定した動作の時のアニメーション(AO)を設定する。
llResetAnimationOverride
指定した動作の時のアニメーション(AO)をリセットする。
llStartAnimation
指定したアニメーションを再生する。
llStopAnimation
指定したアニメーションを停止する。
オブジェクト動き
llDie
自分のオブジェクトを削除する。ゴミ箱に残らないので注意。
llMoveToTarget
自オブジェクト(物理・装着)指定した位置まで指定した時間をかけて動かす。装着しているアバターを動かすこともできる。
- 止めるときは llStopMoveToTarget
llParticleSystem
パーティクルを発生させる。
- ルートプリムからリンクされているものを設定する場合は llLinkParticleSystem
llRezAtRoot
オブジェクトを発生させる。(発生したオブジェクトの基点はルートプリムの中央座標となる)
- 作成したオブジェクトは on_rez イベントで引数を取得可能
llRezObject
オブジェクトを発生させる。(発生したオブジェクトの基点はプリムの中央座標となる)
- 作成したオブジェクトは on_rez イベントで引数を取得可能
llRotLookAt
自オブジェクト(物理・装着)指定した向きまで指定した時間をかけて動かす。装着しているアバターを動かすこともできる。
- 指定した座標を向くように動かす場合は、 llLookAt
- 止めるときは llStopLookAt
llSetBuoyancy
オブジェクト(物理)の浮力を設定する。装着時にはアバターの浮力に影響させる。
llSetKeyframedMotion
オブジェクト(非物理・非装着)を一連のキーフレームで動かす。
llSetTextureAnim
テクスチャを永続的に変更する。
- ルートプリムからリンクされているものを設定する場合は llSetLinkTextureAnim
llTargetOmega
オブジェクトを永続的に回転させる。
オブジェクト情報
llAllowInventoryDrop
プリムの中のインベントリへ、パーミッションの変更が不要のままアイテムを加えることを許可設定する。
llAvatarOnLinkSitTarget
プリムに座っているユーザのUUIDを取得する。
llGetBoundingBox
指定したオブジェクトのバウンディングボックスを取得する。
llGetEnergy
物理オブジェクトのエネルギーを取得する。
llGetInventoryCreator
プリムのインベントリ内で、指定したアイテム名の作者を取得する。
llGetInventoryKey
プリムのインベントリ内で、指定したアイテム名のキーを取得する。
llGetInventoryName
プリムのインベントリ内で、指定したデータの何番目が、どういう名前かを取得する。
llGetInventoryNumber
プリムのインベントリ内のアイテムの中で、指定したデータがいくつは入っているか取得する。
llGetInventoryPermMask
プリムのインベントリ内で、指定したアイテム名のアクセス権限を取得する。
llGetKey
オブジェクト自体のUUIDを取得する。
- ルートプリムからリンクされているものを取得する場合は llGetLinkKey
llGetNumberOfSides
プリムの面の数を取得する。
llGetObjectDetails
オブジェクトの詳しい情報を取得する。
llGetObjectName
オブジェクトの名前を取得する。
- ルートプリムからリンクされているものを取得する場合は llGetLinkName
llGetOwner
オブジェクトの所有者のUUIDを取得する。
llGetOwnerKey
指定したキーからオブジェクトの所有者のUUIDを取得する。
llGetPrimitiveParams
オブジェクトの詳しい設定情報を取得する。
- ルートプリムからリンクされているものを取得する場合は llGetLinkPrimitiveParams
llSetAlpha
指定した面の透明度を変更する。
- ルートプリムからリンクされているものを設定する場合は llSetLinkAlpha
llSetClickAction
プリムをクリックしただけで、特殊な動作をさせるようにする。
llSetColor
指定した面の色を変更する。
- ルートプリムからリンクされているものを設定する場合は llSetLinkColor
llSetStatus
プリムの属性を設定する。
たとえば、物理属性やファントム属性にしたりすることは、 llSetPrimitiveParams でも可能なのですが、この関数では、10mの範囲以上を動かせないような属性、地域外にいった場合は自動返却属性、ドラッグ禁止属性、指定した軸の回転を禁止といった通常では設定できないような属性が設定できます。
llSetText
プリムの上に文字を表示する。
llSetTouchText
メニューの「触る」の文字列を変更する。
llSetPrimitiveParams
プリムの情報をいろいろ設定する。上の日本語情報では追加されたフラグ定数の解説がない(→ 英語の解説 )
最新の関数では下記の定数が増えている
- 「PRIM_SPECULAR」鏡面反射の設定
- 「PRIM_NORMAL」ノーマルマップの設定
- 「PRIM_ALPHA_MODE」アルファモードの設定
ルートプリムからリンクされているものを設定する場合は llSetLinkPrimitiveParamsFast
llSetSitText
メニューの「ここに座る」の文字列を変更する。
llSitTarget
座ったときの座標と向きを設定する。
座る座標を設定できるため、アバターをテレポートさせるときにも利用される。すでに座っているアバターの座標を変更するためには、リンクされているプリムとしてllSetLinkPrimitiveParams で移動させる。
オブジェクト位置
llGetLocalPos
親プリムからの相対座標を取得する。
llGetPos
オブジェクトのリージョン座標を取得する。装着時には装着者からの相対座標を取得する。
llGetRootPosition
親プリムのリージョン座標を取得する。
llSetPos
現在地から 10 m 以内でオブジェクトの座標を設定する。
llSetRegionPos
llSetPos と違って、制限なしにリージョン座標の位置へ移動する。
オブジェクト回転
llGetLocalRot
親プリムからの相対角度を取得する。
llGetRot
オブジェクトの角度を取得する。装着時にはアバターの角度を取得する。
llGetRootRotation
親プリムの角度を取得する。
llSetRot
オブジェクトの角度を設定する。
オブジェクトリンク
llGetLinkNumber
自分のリンク番号を取得する。
llGetNumberOfPrims
リンクされているプリム数を調べる。(アバター含む)
llGetObjectPrimCount
オブジェクトを構成するプリム数を取得する。(アバター含まない)
llPassCollisions
衝突時の親プリムへイベントバブル動作の有無の設定する。
llPassTouches
タッチ時の親プリムへイベントバブル動作の有無の設定する。
メッセージ送信
llEmail
指定したアドレスへEメールを送信する。
- 受信時は email イベントが発生する。
llInstantMessage
指定したアバターへインスタントメッセージを送る。
llMessageLinked
同一オブジェクト内で情報やり取りのためにメッセージを送信する。
llOwnerSay
自分にしか見えないチャットを発言する
llRegionSay
地域内の指定したチャネルへ発言する。
llRegionSayTo
地域内の指定したアバターの指定したチャネルへ発言する。
- URI Name Space を送ることで色々な機能が利用できる。
llSay
指定したチャネルへ発言する。(20メートル)
llShout
指定したチャネルへさけぶ。(100メートル)
llWhisper
指定したチャネルへささやく。(10メートル)
プッシュ
llApplyImpulse
自オブジェクト(物理)の指定したベクトルへ衝撃を与える。
llApplyRotationalImpulse
自オブジェクト(物理)の指定した回転方向へ衝撃を与える。
llPushObject
指定したオブジェクト(物理)に指定したベクトルと回転方向に衝撃を与える。衝撃は距離の 3 乗の割合で軽減される。
llSetAngularVelocity
自オブジェクト(物理)の回転速度を変更する。
llSetForce
自オブジェクト(物理)に継続的な力を与える。
llSetVelocity
自オブジェクト(物理)の速度を指定した速度にする。
当たり判定
llCastRay
指定した位置から指定した位置へレイを飛ばして、衝突位置を調べる。
llCollisionFilter
衝突イベントにフィルタをかける。
- → collision の発生条件にフィルターをかける
llGround
土地の地面の高さを取得する。
llSensor
オブジェクトの周りにある物体を検出させる。
- → sensor
- llSensorRepeat で定期的に検出させることもでき、それを llSensorRemove で除去できる
文字列・リスト
llCSV2List
CSVの文字列をListへ変換する。
llGetListEntryType
List型の指定した項目の型を取得する。
llGetListLength
List型の長さを取得する。
llListStatistics
List型の数値から統計情報を取得する。
llGetNotecardLine
ノートカードの指定した行を取得する。
- 取得時には dataserver イベントが発生する
- ノートカード自体の更新時などは、 changed イベントで取得可能
llGetNumberOfNotecardLines
ノートカードの行数を取得する。
llGetSubString
文字列内の指定した箇所を切り出す。JavaScriptでいうsubstring
関数。
llMD5String
文字列からMD5ハッシュの作成する。
llParseStringKeepNulls
文字列内で指定した区切り文字で区切る。JavaScriptでいうsplit
関数。
- 空となる文字を除き、
trim
を行う場合は、 llParseString2List の関数だけで可能
llSHA1String
文字列からSHA1ハッシュの作成する。
llStringLength
文字列の長さを取得する。JavaScriptでいうlength
関数。
llStringTrim
文字列内の前後の空白を除去する。JavaScriptでいうtrim
関数。
llSubStringIndex
文字列内で指定した文字の位置を取得する。JavaScriptでいうindexOf
関数。
JSON
llJson2List
JSON文字列からList型へ変換する。
llJsonGetValue
JSON文字列の指定した項目のデータを取得する。
llJsonSetValue
JSON文字列に指定した項目へデータを入れる。
llJsonValueType
JSON文字列の指定した項目の型を取得する。
llList2Json
List型からJSON文字列へ変換する。
HTTP通信
http_request
プリム内に設置したWebサーバーに対してHTTPアクセスがあった場合、あるいはllRequestURL
を実行後のURLを発行時に発生。
llRequestURL
を実行後のURLは、第3引数に入る。- 第1引数のIDは、
llGetHTTPHeader
を利用することで解析が行える。
http_respose
llHTTPRequest
の応答時にイベントが発生。
llGetHTTPHeader
http_request
の第1引数を使用して、情報を解析する。IPアドレスやどのようなURLでアクセスされたかなどが分かる。
llHTTPRequest
指定したWWWへHTTPリクエストを送信する。
- 応答時は http_response イベントが発生する。
llRequestURL
Webサーバーを作成する。作成したWebサーバーのURLは、http_request
で受け取る。
- HTTPS用のサーバーを作る場合は、
llRequestSecureURL
を使用する。 - SIMが再起動するとWebサーバーは終了するため、
changed
イベントのCHANGED_REGION_START
発生時に改めて、llRequestURL
で作成する。 - 作成できるWebサーバーの数は制限がある。
llGetFreeURLs
で取得が可能。 - 作成したWebサーバーを閉じる場合は、オブジェクトかスクリプトを削除するか、
llReleaseURL
で削除する。
イベント発生特定
llDetectedGroup
アバターと、本スクリプトを設定したプリムとが同一グループかを取得する。
- llSameGroup 関数では個別に取得可能
llDetectedKey
発生させたオブジェクト・アバターのUUIDを取得する。
llDetectedLinkNumber
クリックしたプリムのリンク番号を取得する。
llDetectedTouchFace
クリックした面のインデックス番号を取得する。
llDetectedTouchST
面内でクリックした座標を取得する。
llDetectedTouchUV
面内でクリックしたテクスチャ上のUV座標を取得する。
llDetectedType
検出したもののオブジェクトの種類を取得する。
llDetectedVel
オブジェクトの速度を取得する。
ダイアログ
llDialog
ダイアログ型GUIを表示させる。
llLoadURL
指定したURLへ誘導するダイアログボックスの表示する。
llMapDestination
指定した位置の世界地図を開く(装着したものか、タッチ系のみで動作)。
llSetPayPrice
支払い選択時に表示されるダイアログを設定する。
- プリムへ支払った場合は money イベントが発生する
llTextBox
入力用のダイアログボックスを表示させる。
音声
llAdjustSoundVolume
再生中の音声の音量を変更する。
llCollisionSound
衝突音を変更する。
llPreloadSound
音をダウンロードしてキャッシュにためる。
llPlaySound
音を再生するキャッシュにあれば即再生する。
llPlaySoundSlave
音を再生し、Slaveされたものも再生する。
llLoopSound
音を連続再生する。
llLoopSoundMaster
音を連続再生し、Slaveされたものも再生する。
llLoopSoundSlave
音を連続再生を予約し、Masterが呼ばれたら再生する。
llSetSoundQueueing
再生した音が終了するまでスクリプトを止める。
llSetSoundRadius
音の聞こえる領域を変更する。
llSetParcelMusicURL
土地内に流れる放送音楽を変更する。
llStopSound
音を止める。
llTriggerSound
オブジェクトがある固定位置で音を流す。
llTriggerSoundLimited
指定したバウンディングボックス内で音を流す。
カメラ
llClearCameraParams
カメラの情報を初期化する。
- 要
PERMISSION_TRACK_CAMERA
権限
llGetCameraPos
カメラの座標を取得する。
- 要
PERMISSION_TRACK_CAMERA
権限
llGetCameraRot
カメラの向きを取得する。
- 要
PERMISSION_TRACK_CAMERA
権限
llSetCameraParams
カメラの状態を設定する。
- 要
PERMISSION_TRACK_CAMERA
権限
環境・気象
llCloud
雲の情報を取得する。
- 13.02.08.270166 にて廃止済み。0が返ります。
llGetDayLength
区画に設定された1日の秒数を取得する
- リージョンの場合は、
llGetRegionDayLength
を使用すること
llGetDayOffset
区画に設定された環境時刻の加算されているオフセット値?を取得する
- リージョンの場合は、
llGetRegionDayOffset
を使用すること
llGetEnvironment
指定した座標の環境を取得する。
- 環境とは例えば、空の色や水の設定、シーンの設定など
llGetSunDirection
太陽の方向「正規化された方向ベクトル」を取得する。
- 月の方向を調べる場合は、
llGetMoonDirection
を使用すること
llGetSunRotation
太陽の方向をローテーションで4元数で取得する。
- 月の方向を調べる場合は、
llGetMoonRotation
を使用すること
llGetTimeOfDay
セカンドライフ内の朝昼夜の時間「秒」を取得する。取得した値はfloat
型となる。
なお、セカンドライフ内は1日が4時間で、1時間ごとに夜、朝、昼、夕のサイクルとなる。この秒数は深夜からカウントされるが、再起動によってカウントがリセットされるため、秒数から今の時間帯を割り出すのは難しいかと思われる。(未確認)
llWater
海の高さを取得する。
llWind
風向きを取得する。
土地・区画
llAddToLandBanList
一定時間、土地へのアクセスを禁止する。
llGetAgentList
区画にいる全アバターを取得する。
llGetEnv
以下のようなリージョンの情報を取得する。
- CPU数(
region_cpu_ratio
) - SIMの種類(
region_product_name
) - SIMの起動時のUNIX時刻(
region_start_time
)。llGetUnixTime
からこの値を引けば起動時間が導ける。
llGetParcelDetails
指定した座標の区画情報を取得する。
llGetParcelFlags
より詳しい区画の情報を取得する。
- リージョンの情報を調べる場合は、
llGetRegionFlags
を使用すること
llGetParcelMaxPrims
区画の最大プリム数を取得する。
llGetParcelPrimCount
区画内にあるプリム数を取得する。
llGetRegionAgentCount
リージョン内のアバター数を取得する。
llGetRegionFlags
リージョン内のフラグ(飛行禁止や、土地操作無効など)を取得する。
- 区画の情報を調べる場合は、
llGetParcelFlags
を使用すること
llGetRegionFPS
リージョンのFPSを取得する。
llGetRegionTimeDilation
リージョンのラグを取得する。
llParcelMediaCommandList
区画で設定したメディア情報を設定する。例えば PARCEL_MEDIA_COMMAND_URL
を使用すれば区画内の動画情報を設定できる。他にも再生や、一時停止といったことも可能。
llParcelMediaQuery
区画で設定したメディア情報を取得する。例えば PARCEL_MEDIA_COMMAND_TEXTURE
を使用すれば動画のテクスチャを取得できる。
llRequestSimulatorData
SIM全体の稼働状況を取得する。
- 取得時には dataserver イベントが発生する
時間
llGetGMTclock
GMTの午前0時からの経過した時間「秒」を取得する。取得した値はinteger
型となる。
llGetTime
スクリプトが起動してからの時間「秒」を取得する。取得した値はfloat
型となる。
- llResetTime で値を初期化可能
llGetWallclock
太平洋時間の午前0時からの経過時間「秒」を取得する。integer
型となる。
スクリプト
llGetFreeMemory
スクリプトの空き容量を取得。
llGetScriptName
自分のスクリプトの名前を取得する。
llGetStartParameter
llRezObject 等で Rez された際に引数を取得する。
llRemoveInventory
自プリムのインベントリ内にある指定したデータを削除する。
llResetOtherScript
指定した名前のスクリプトをリセット。
llResetScript
自分のスクリプトをリセット。
llSetScriptState
指定した名前のスクリプトを停止/再開させる。
llSetTimerEvent
この関数を呼んだ後定期的にタイマーイベントを発生させる。
- 0秒を指定すると削除できる
- timer イベントが発生する
llSleep
スクリプトを指定した秒数停止する。
イベント
attach
装着時に発生。
changed
オブジェクトの状態に変化があったときに発生。インベントリ内に変化あったときや、他のSIMへ移動したときなど。
collision_start
他のオブジェクトとの衝突時に発生。
- llCollisionFilter でイベントを発生させるオブジェクトをフィルタ
- llVolumeDetect で通過可能だが、本イベントを発生させることも可能
dataserver
データを取得時に発生。
land_collision_start
地面との衝突時に発生。
listen
チャットに発言があると発生。
on_rez
rezされた時に発生。
object_rez
rezした時に発生。
sensor
センサー系の関数で見つかったときに発生。
timer
指定した時間ごとに発生。
touch_start
クリック開始から発生。
この関数を入れることで、オブジェクトの上にカーソルを乗せるとタッチできるようになる。逆にクリックさせないようにするためには、ステートを変更するしかない。
その他
llClearCameraParams
カメラの情報を初期化する。
- 要
PERMISSION_TRACK_CAMERA
権限
おまけ
クリック時に何を起こさせるかは、llSetClickActionでも設定できますが、GUI上から設定できます。
「編集」の「一般」の「クリックで」から変更ができます。設定は下記から選択できます。
- 触る(デフォルト)
- オブジェクトに座る
- オブジェクトを購入する
- オブジェクトに支払う
- 開く
- ズームする
コメント