なたで日記

いろいろな思ったこと書きますヽ(^▽^ゞ) by natade

セカンドライフの関数逆引きメモ

leave a comment »

セカンドライフ用の関数はたくさんあります。これらはもちろん覚えきれないため、
通常何かをしたいときに適時思い浮かぶ単語から
Second Life LSL ポータルの関数 (en, translate)  で具体的な使い方を調べると思います。

しかし、そもそもどういったことが可能かどうかが分かっていないと、調べるにしても手も足も出ないと思います。
そこで、今回セカンドライフのいくつかの関数について、メモ代わりに逆引きの関数を作ってみました。
これらの関数があるということさえ知っておけば、
次回何か作るときに「あっ!そういえばあの関数あったな!」とスムーズに作れると思います。
なお、ここで紹介する関数はあくまで一部であり、偏っていることに注意してください。

zhi-zheng.net さんの 逆引きの関数 もおすすめです。


目次

アバター
アバターのアニメーション
オブジェクト動き
オブジェクト情報
オブジェクト位置
オブジェクト回転
オブジェクトリンク
メッセージ送信
プッシュ
当たり判定
文字列・リスト
JSON
イベント発生特定
ダイアログ
音声
土地・区画
時間
スクリプト
イベント
その他


関数

llAttachToAvatar

権限があるアバターのインベントリに取り込まれたうえでアイテムを装着させる
スクリプトが入った装着用オブジェクトは、Rez された状態にないといけない。
要 PERMISSION_ATTACH 権限

llAttachToAvatarTemp

権限があるアバターのインベントリには表示されないアイテムを装着させる
スクリプトが入った装着用オブジェクトは、Rez された状態にないといけない。
装着したものは、アバターが自主的に外せなくなるため注意。
要 PERMISSION_ATTACH 権限

llDetachFromAvatar

装着したアイテムを外す
要 PERMISSION_ATTACH 権限

llGetAgentInfo

アバターが何をしているか

llGetAgentSize

アバターの大きさを推定して取得する

llGetAgentLanguage

アバターの言語設定を取得する

llGetAttached

本オブジェクトがアバターのどの位置に装着されているか取得する

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 イベントが発生

llHTTPRequest

指定したWWWへHTTPリクエストを送信する
応答時は http_response イベントが発生

llInstantMessage

指定したアバターへインスタントメッセージを送る

llMessageLinked

同一オブジェクト内で情報やり取りのためにメッセージを送信する(→ link_message

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 で除去できる

llWater

海の高さを取得

llCSV2List

CSVの文字列をListへ変換する

llGetListEntryType

List型の指定した項目の型を取得

llGetListLength

List型の長さを取得する

llListStatistics

List型の数値から統計情報を取得

llGetNotecardLine

ノートカードの指定した行を取得する
取得時には dataserver イベントが発生する
なお、ノートカード自体の更新時などは、 changed イベントで取得可能

llGetNumberOfNotecardLines

ノートカードの行数を取得する

llGetSubString

文字列内の指定した箇所を切り出す(substring関数)

llMD5String

文字列からMD5ハッシュの作成

llParseStringKeepNulls

文字列内で指定した区切り文字で区切る(split関数)
空となる文字を除き、trimを行う場合は、 llParseString2List の関数だけで可能

llSHA1String

文字列からSHA1ハッシュの作成

llStringLength

文字列の長さを取得する(length関数)

llStringTrim

文字列内の前後の空白を除去する(trim関数)

llSubStringIndex

文字列内で指定した文字の位置を取得する(indexOf関数)

llJson2List

JSON文字列からList型へ変換

llJsonGetValue

JSON文字列の指定した項目のデータを取得

llJsonSetValue

JSON文字列に指定した項目へデータを入れる

llJsonValueType

JSON文字列の指定した項目の型を取得

llList2Json

List型からJSON文字列へ変換

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

指定したバウンディングボックス内で音を流す

llAddToLandBanList

一定時間、土地へのアクセスを禁止する

llGetAgentList

区画にいる全アバターを取得する

llGetParcelDetails

指定した座標の区画情報を取得する

llGetParcelFlags

より詳しい区画の情報

llGetParcelMaxPrims

区画の最大プリム数

llGetParcelPrimCount

区画内にあるプリム数

llGetRegionAgentCount

リージョン内のアバター数

llParcelMediaCommandList

区画で設定したメディア情報を設定する
例えば PARCEL_MEDIA_COMMAND_URL を使用すれば区画内の動画情報を設定できる
他にも再生や、一時停止といったことも可能

llParcelMediaQuery

区画で設定したメディア情報を取得する
例えば PARCEL_MEDIA_COMMAND_TEXTURE を使用すれば動画のテクスチャを取得できる

llRequestSimulatorData

SIM全体の稼働状況を取得する
取得時には dataserver イベントが発生する

llGetGMTclock

GMTの午前0時からの経過した時間「秒」を取得する。integer型となる。

llGetSunDirection

太陽の方向「正規化された方向ベクトル」を取得する

llGetTime

スクリプトが起動してからの時間「秒」を取得する。float型となる。
llResetTime で値を初期化可能

llGetTimeOfDay

セカンドライフ内の朝昼夜の時間「秒」を取得する。float型となる。
なお、セカンドライフ内は1日が4時間で、1時間ごとに夜、朝、昼、夕のサイクルとなる。
この秒数は深夜からカウントされますが、再起動によってカウントがリセットされるため、秒数から今の時間帯を割り出すのは難しいかと思います。(未確認)

llGetWallclock

太平洋時間の午前0時からの経過時間「秒」を取得する。integer型となる。

llGetFreeMemory

スクリプトの空き容量を取得

llGetScriptName

自分のスクリプトの名前を取得する

llGetStartParameter

llRezObject 等で Rez された際に引数を取得する

llRemoveInventory

自プリムのインベントリ内にある指定したデータを削除する

llResetOtherScript

指定した名前のスクリプトをリセット

llResetScript

自分のスクリプトをリセット

llSetScriptState

指定した名前のスクリプトを停止/再開させる

llSetTimerEvent

この関数を呼んだ後定期的にタイマーイベントを発生させる
timer イベントが発生する
0秒を指定すると削除できる

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 権限

llGenerateKey

固有のUUIDのkeyを作成する

llGetCameraPos

カメラの座標を取得する
要 PERMISSION_TRACK_CAMERA 権限

llGetCameraRot

カメラの向きを取得する
要 PERMISSION_TRACK_CAMERA 権限

llSetCameraParams

カメラの状態を設定する
要 PERMISSION_TRACK_CAMERA 権限


おまけ

click_type

クリック時に何を起こさせるかは、
llSetClickActionでも設定できますが、GUI上から設定できます。
「編集」の「一般」の「クリックで」から変更ができます。
設定は下記から選択できます。

・触る(デフォルト)
・オブジェクトに座る
・オブジェクトを購入する
・オブジェクトに支払う
・開く
・ズームする

管理者用編集
広告

Written by なたで

2014年12月29日 @ 00:00

カテゴリー: game, memo, program

Tagged with ,

コメントをどうぞ(承認された後に公開されます。メールアドレスの記入は自由ですが、記入した場合でも一般公開されることはありません)

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。