BlackSheep-LSL@Wiki内検索 / 「リモートロード」で検索した結果

検索 :
  • llRemoteLoadScriptPin
    ...ameのスクリプトをリモートロードする。 リモートロードは引数pinで識別され、引数runningにはリモートロード後のスクリプトの有効/無効状態を指定する。 また、引数start_paramの値はリモートロード後のスクリプトからllGetStartParameter関数で取得できる。 引数targetで指定されるUUIDのオブジェクトは、リモートロード元のオブジェクトと同一SIM上になければならない。 引数pinはリモートロードのセキュリティ確保のために用意されている識別値である。 リモートロードを行う際には、リモートロード先のオブジェクトにおいて、llSetRemoteScriptAccessPin?関数を実行し、pinの値を設定しておかなければならない。 llRemoteLoadScriptPin関数ではあらかじめ設定されたpinの値を用いてリモートロー...
  • スクリプト小技
    ...lの送受信? リモートロード? 高度なカメラ制御 はじめに カメラ制御とはポジション フォーカス ロック ディスタンス ピッチ ビハインドネス ラグ スレッショルド カメラ制御の関数llSetCameraParams関数 llClearCameraParams関数 llReleaseCamera関数 カメラ制御スクリプト俯瞰カメラ 固定追尾カメラ 完全固定カメラ カメラの動的制御 モジュール化 はじめに スクリプトのサイズ モジュール化の概念 モジュール化の手法 ドア・システム・スクリプト基本的なモジュールslide door module standard door module door main module short touch module group touch module 拡張モジュールsensor module phantom door mod...
  • 制御系
    ... 関数 スクリプトのリモートロードを許可する[参考]リモートロード llSetRemoteScriptAccessPin(integer pin) llSetScriptState 関数 オブジェクト内の他のスクリプトの有効・無効を設定する llSetScriptState(string name, integer run) llSleep 関数 スクリプトを指定秒数停止させる llSleep(float sec) 名前 コメント
  • リファレンス(名前順)
    ...in? スクリプトのリモートロードを許可する[(参考)]リモートロード? llSetRemoteScriptAccessPin(integer pin) llSetRot? オブジェクトを回転させる(参考) llSetRot(rotation rot) llSetScale? オブジェクトのサイズを変更する llSetScale(vector scale) llSetScriptState? オブジェクト内の他のスクリプトの有効・無効を設定する llSetScriptState(string name, integer run) llSetSitText? パイメニューの「Sit」を他の文字列に変更する llSetSitText(string text) llSetSitText? パイメニューの「Sit」を他の文字列に変更する llSetSitText(string t...
  • リファレンス(機能別)
    ...in? スクリプトのリモートロードを許可する[(参考)]リモートロード? llSetRemoteScriptAccessPin(integer pin) llSetScriptState? オブジェクト内の他のスクリプトの有効・無効を設定する llSetScriptState(string name, integer run) llSleep? スクリプトを指定秒数停止させる llSleep(float sec) 属性系 面 llGetNumberOfSides primの面数を得る integer llGetNumberOfSides() テクスチャ llGetTexture 指定面のテクスチャーを得る string llGetTexture(integer side) llGetTextureOffset テクスチャーのオフセット値を得る vector llGe...
  • ステートのこと
    はじめに ステートの復習 ステートの使いどころ ステートとグローバル変数グローバル変数 ステートの注意点 今回のポイント はじめに 今回はスクリプトの構成について少し突っ込んだ話をします。 具体的に実用性のあるスクリプトは出てきませんが、自分で1からスクリプトを書こうというとき、構成をどうするか考える際の参考にしていただければと思います。 このwikiの記事では、最初の頃にスクリプトの構成について触れました。 「ステート」「イベント」「処理」の3つの要素で成り立っているという話です。 私はこの3つがスクリプトの基本要素であると説明し、スクリプトを書く際には作ろうとしている機能がどんな「ステート」「イベント」「処理」になるのか意識すると良いと書いてきましたが、実際には「ステート」がどんな時に登場するのか、いまひとつハッキリしないという方もいらっしゃるのではないで...
  • llForceMouselook
    llForceMouselook llForceMouselook(integer mouselook) primに座ったアバターが強制的にマウスルックモードになるよう設定/設定解除する。 引数mouselookにTRUEを指定すると、そのprimに座ったアバターは強制的にマウスルックモードになる。 FALSEであればマウスルックモードにはならない(マウスルックモードの変更は行わない)。 すでに座っているアバターの視界をコントロールすることはできない。 座ったアバターをマウスルックモードにしたい場合は、あらかじめllForceMouselook(TRUE);を実行しておく必要がある。 一度この関数を使って強制マウスルックをONにした場合は、llForceMouselook(FALSE);を実行するまでその設定は有効である。 なお、この関数を使ったからといっ...
  • llReleaseControls
    llReleaseControls llReleaseControls() キーコントロールを終了する。 キーコントロールとはアバターのキー入力を取得する制御で、llTakeControls?関数を使って開始される。 llTakeControls?関数でキーコントロールを開始するにはPERMISSION_TAKE_CONTROLSパーミッションが必要であるが、llReleaseControls関数を実行するとコントロールが終了するだけでなく、PERMISSION_TAKE_CONTROLSパーミッションも解除される。 再びキーコントロールを開始する際にはllRequestPermissions関数を使って再度パーミッションの取得から始めなければならない。 ...
  • llSetCameraAtOffset
    llSetCameraAtOffset llSetCameraAtOffset(vector offset) アバターがオブジェクトに座ったときのカメラ(視点)の向きを引数offsetで指定された方向に設定する。 この関数はアバターがオブジェクトに座る前に実行しておく必要がある。 すでに座っているアバターの視点をコントロールすることはできない。 例えば以下のコードはオブジェクトに座ったアバターの視点をオブジェクトの上方5mの位置に向ける。 default { state_entry(){ llSetCameraAtOffset( 0,0,5 ); } } オブジェクトに座ったときのアバターのカメラ位置(目の位置)を変更するにはllSetCameraEyeOffset関数を使う。 カメラの位置を方向をコントロールすると、例えばアバターがオブジ...
  • llSetCameraEyeOffset
    llSetCameraEyeOffset llSetCameraEyeOffset(vector offset) アバターがオブジェクトに座ったときのカメラ(視点)の位置を引数offsetで指定した場所に設定する。 引数offsetに指定するのはオブジェクトの中心からの相対位置である。 この関数はアバターがオブジェクトに座る前に実行しておく必要がある。 すでに座っているアバターの視点位置をコントロールすることはできない。 例えば以下のコードはオブジェクトに座ったアバターのカメラ位置をオブジェクトの後方(X軸マイナス方向)3mの位置する。 default { state_entry(){ llSetCameraAtOffset( -3,0,0 ); } } オブジェクトに座ったときのアバターのカメラの向き(視点の方向)を変更するに...
  • カメラ制御
    はじめに カメラコントロールllSetCameraEyeOffset(vector offset); llSetCameraAtOffset(vector offset); 定点カメラスクリプト 今回のポイント はじめに 最後に衝突について説明して初級スクリプト講座を終えようと思っていたのですが、最近、カメラのコントロールが意外に面白い効果を出せることに気づいたので、今回はカメラの制御について書きたいと思います。 SLで言うところのカメラとは、「視点」のことです。 通常、SLの視点はユーザーが自由に動かすことができます。 ALTを押しながらアバターを左クリックすると、そのアバターに注目したりもできますね。 結構自由なカメラコントロールが許されていて、私のように趣味でムービーを作る者にとっては重宝しています。 スクリプトからカメラをコントロールする方法も用意さ...
  • 基礎知識/フロー制御とは?
    フロー制御 フロー制御というのは、条件によって実行するコードを変えたり、繰り返し処理を行ったりするものを言います。 プログラムの処理の流れ(フロー)をコントロールするものなので、「フロー制御」と呼ばれます。 まずはフロー制御の種類を挙げておきます。 フロー制御 説明 if-else 条件分岐。条件に応じて実行するコードを変える。 whle ループ処理。条件を満たす間延々と繰り返し処理を行う。 do-while ループ処理。処理を行った後、条件を満たす場合は繰り返す。 for ループ処理。条件を変化させながら繰り返し処理を行う。 return 復帰(リターン)。ユーザー関数やイベントを終了する。 jump ジャンプ。指定したコードの行に処理を飛ばす。 state ステート。LSLのステートを変更する。 if-else フロー制御の中でも最も使用頻度が高いのがif...
  • llLoopSound
    llLoopSound llLoopSound(string sound, float volume) 引数soundで指定した名前またはUUIDのサウンドをループ再生する。 引数volumeは音量である。 0.0~1.0の間で指定し、0.0は無音、0.5ならオリジナルの半分の音量、1.0はオリジナルの音量である。 この関数を使って再生しているサウンドを止めるにはllStopSound?関数を使えばよい。 また、llAdjustSoundVolume関数を使うと音量をコントロールできるので、フェードアウトのような演出も不可能ではない。 具体的なサンプルコードは「音を鳴らそう」を参照。 名前 ...
  • llScaleTexture
    llScaleTexture llScaleTexture(float horizontal, float vertical, integer side) 引数faceで指定した面のテクスチャのスケール(リピート)を設定する。 スケールは引数horizontalで水平方向の倍率、引数verticalで垂直方向の倍率を指定する。 この関数で指定する水平・垂直方向のテクスチャ倍率は、ビルドツールで指定できる"Repeats per Face Horizontal (U)"及び"Vertical (V)"と等しい。 面の指定方法はllGetColor関数の説明を参照。 primの形状によって面番号は異なる。 この関数の実行には0.2秒かかる。 テクスチャのスケールをコントロールするには他にllSetPrimitiv...
  • 看板を作ろう
    はじめに フローティングテキストllSetText関数 回転看板llTargetOmega関数 アニメーション看板llSetTextureAnim関数 地図看板llSetTouchText関数 llMapDestination関数 ランドマーク看板llGiveInventoryList関数 まとめ はじめに 第六回~第八回は初級スクリプトの最初の山場でした。 へヴィな内容が続きましたので、今回はちょっと息抜き的に、しかしながら実用的なスクリプトを作ってみたいと思います。 SLで店をやるという人は多いでしょう。 そして商品の販売用や、宣伝のために、看板を作りたいという人もいるかと思います。 綺麗なテクスチャさえ用意すれば、それなりの看板を作ることができますが、この記事は一応スクリプトの勉強ですのでw、スクリプトを使った動きのある看板に挑戦してみましょう。 照明...
  • llReleaseCamera
    llReleaseCamera llReleaseCamera(key agent) カメラコントロールを終了する。 似たような関数にllClearCameraParamsがあるが、llClearCameraParamsはあくまでもカメラ制御のパラメータをデフォルトに戻して制御を一時停止するのみとなる。 llReleaseCameraはカメラ制御を完全に終了する。 カメラ制御に関しては高度なカメラ制御を参照。 名前 コメント
  • llParcelMediaCommandList
    llParcelMediaCommandList llParcelMediaCommandList(list command_list) 土地に設定可能なムービーメディアのコントロールを行う。 要するにQuickTime制御用の関数である。 この関数の実行には2秒かかる。 lslWikiに従い、土地にムービーを設置する手順から説明する。 1.土地を所有すること。自分に権限のある土地でなければムービーの設置はできない。 2.ムービー用テクスチャ(メディアテクスチャ)の設定。何でもいいが、ムービー再生画面となるテクスチャを用意する。このテクスチャを貼ったオブジェクト(の面)は全てムービー再生用画面になる。 3.再生するムービーのURLを設定。ムービーはインターネット上で閲覧可能な状態でなければSL内で再生できない。自分で作ったムービーであればレンタルHPスペー...
  • ノートを使おう
    はじめに ノートカード読取の仕組みllGetNotecardLine関数 dataserverイベント 典型的なパターン ノートカード対応ベンダーllParseString2List関数 for文 今回の歩イント はじめに ベンダースクリプトの改良編です。 前回までで機能面は十分に満たすものを作りましたが、今回は使い勝手のよいものになるよう改造を施します。 改良点は商品データの管理の部分です。 前回までのスクリプトでは、商品データをリスト型変数に定義していましたが、この方法だと商品の追加や変更があったときにいちいちスクリプトを直さなければなりません。 そこで、商品データはSLのノートカードを使って管理するようにし、ノートカードを切り替えるだけで扱う商品を変えられるようなベンダーを考えます。 商品のデータに対して、そのデータを使ってアレコレ操作する仕組みを「ロ...
  • llMoveToTarget
    llMoveToTarget llMoveToTarget(vector target, float tau) 物理オブジェクトを位置targetまでtau秒間で移動させる。 tauを調整することで移動速度をコントロールすることが可能であるが、速度は均一にはならない。 llStopMoveToTarget?関数によって移動をキャンセルすることができる。 また、目標値点targetに到達したかどうかはat_target?イベント及びnot_at_target?イベントで判別可能。 この関数は物理オブジェクトのエネルギーを消費するため、必ずしも常に動かし続けられるわけではない。 エネルギーについてはllGetEnergy関数を参照。 名前 ...
  • 基礎知識/SL世界の法則
    ここではSLの世界に特有な法則や決まりごとについての解説を行います。 例えばSLの世界には物理法則が存在しますが、その法則はリアルワールドのものとは異なっています。 他にも、SLを構成するprimについての話やテクスチャやサウンドなど、随時追加予定です。 アバター/オブジェクト アバター UUID チャット? シット? パーミッション? アタッチメント? キーコントロール? UI? カメラ? グループ? プリム/オブジェクト 面? テクスチャ? 色/透明度? リンク? Rez? UUID アイテム コンテンツ/インベントリ? アイテム アニメーション? サウンド? テクスチャ? ランドマーク? スクリプト? ワールド 座標系 位置? 回転 SIM セキュリティ? 天候? 地面? 物理 エネルギー? 加速度? フォース? インパルス...
  • llPreloadSound
    llPreloadSound llPreloadSound(string sound) 引数soundで指定されたサウンドをプレロード(再生準備)する。 あくまでもサウンドを準備するだけであって再生は行われない。 サウンドがオブジェクトコンテンツ内にあれば引数soundは名前を使って指定可能。 コンテンツにないならUUIDを指定する。 この関数の実行には1秒かかる。 詳細な仕組みは知らないが、SLにおいてサウンドを耳にする場合、クライアントはサウンドデータをダウンロードしてくることになる。 これは裏方作業なので、ユーザーが通常意識することはない。 一つのサウンドが10秒までに制限されているのは、クライアントがサウンドをダウンロードする際の時間が比較的短時間で済むという理由もあるだろう。 しかしながら、10秒に制限されているとは言ってもサウンドデー...
  • llParcelMediaQuery
    llParcelMediaQuery list llParcelMediaQuery(list query_list) 土地に設定されているメディアテクスチャ及びメディアURLを取得する。 引数query_listには以下の値を設定する。 定数 値 説明 PARCEL_MEDIA_COMMAND_TEXTURE 4 メディアテクスチャのUUIDを要求 PARCEL_MEDIA_COMMAND_URL 5 メディアURLを要求 query_listが[PARCEL_MEDIA_COMMAND_TEXTURE]であればメディアテクスチャのUUIDが返るし、[PARCEL_MEDIA_COMMAND_URL]であればメディアURLが返る。 [PARCEL_MEDIA_COMMAND_TEXTURE, PARCEL_MEDIA_COMMAND_URL]を指定すれば両方を...
  • 基礎知識/アバター
    アバターとはSLユーザーが操作するキャラクターのことを指します。 広義にはSLユーザーやアカウントまでも含めて「アバター」という言葉を使うこともありますが、通常はSL画面に表示される人型(稀に人型ではないヤツもいますがw)のキャラクターのことを言います。 アバターは固有の名前を持っていますが、通常の場合LSLではUUIDで識別されます。 名前についてはファーストネーム(名前)とセカンドネーム(苗字)があり、ファーストネームのほうはユーザーが自由につけることができます。 セカンドネームはリンデンが用意したものの中から一つを選ぶようになっています。 ファーストネームが同じアバターというのは存在しますが、ファーストネーム+セカンドネームとなると必ず固有の名前になります。 UUID UUIDとは (Universal Unique IDentifier)の略で、SL内のあら...
  • テレポート
    テレポートハック 移動型テレポーター テレポートハック 初心者さん向けのスクリプト解説記事を書いたところ、 「んなことはわかってる!もっと役に立つことを書かんかい!」 というお叱りを受けたので(笑)、ある程度スクリプトのことはわかっている人向けに、スクリプトの小技を紹介するカテゴリを設けました。 まずは有名どころから。 「テレポートハック」と呼ばれるスクリプトです。 最初にスクリプトコードを載せておきます。 01 vector offset = 0.0, 0.0, 10.0 ; // テレポート位置 02 rotation rot = ZERO_ROTATION; 03 04 default { 05 state_entry(){ 06 llSitTarget(offset, rot); 07 } 08 ...
  • llRequestPermissions
    llRequestPermissions llRequestPermissions(key agent, integer perm) 引数agentで指定したUUIDのアバターに対して、引数permで指定したパーミッションの取得要求を出す。 パーミッション要求が出されると、アバターのクライアント上にパーミッションダイアログが表示され、許可もしくは不許可の回答を求められる。 アバターが回答するとrun_time_permissions?イベントが発生し、パーミッションが取得できたのか、それともできなかったかの判定を行うことができる。 引数permに指定可能な定数は以下の通り。 定数名 値 説明 使用可能になる関数 PERMISSION_DEBIT 2 スクリプトオーナーの所持金からの支払許可 llGiveMoney PERMISSION_TAKE_CONTROL...
  • 照明を作ろう
    はじめに build ライト効果の設定 初めての照明スクリプト 同じ処理をまとめよう 今回のポイント はじめに 椅子、ドアと作ってきたことで、だいぶスクリプトの構成については理解できてきたと思います。 今回はさらに練習として、照明を作ってみましょう。 ただの照明では面白くありませんので、カラフルに色が変わるものにしたいと思います。 build お好みで照明器具を作りましょう。 ランプ型、蛍光灯型、電球型、なんでも構いません。 私はこんなのを作りました。 Snapshot_107.jpg 手抜きなスタンドライトですw ライト効果の設定 今回のスクリプトは、タッチするたびに照明の色が変わるものにしましょう。 最初は明かりがついていなくて、タッチすると赤く光り、次にタッチすると緑、さらにタッチすると青、もう一度タッチすると照明が消える(...
  • llMD5String
    llMD5String string llMD5String(string src, integer nonce) 文字列srcをMD5(Message Digest Algorithm 5)でハッシュ値に変換する。 MD5とはハッシュ値を作成するためのある処理方式の名前。 しばしば、ダウンロードデータ等が改ざんされて無いかどうかを判定するために使われる。 詳しいことをここで説明するのは少々筋違いなので興味のある方は調べてみて下さい。 あくまでも関数の機能として述べるなら、llMD5String関数は文字列srcを"2cfa746974210d68e96ee620bf842fb6"のようなデータ(ハッシュ値)に変換する。 変換後のデータ(ハッシュ値)から元の文字列を求めることは出来ない。 ...
  • 初!スクリプト
    はじめに スクリプトの作成 ハロー・アバター・スクリプト 本当にそうなってるのか? はじめに 前回はスクリプトの構成について説明しました。 「状態(ステート)」 「きっかけ(イベント)」 「反応」 の3つで構成されているという点は基礎中の基礎ですので踏まえておいて下さい。 今回は実際にSLの中でスクリプトを動かしてみたいと思います。 だらだらと説明ばかりでは飽きるでしょうし(^^; スクリプトの作成 SLにログインし、実際に作ってみましょう。 スクリプトの作り方は、厳密には2つの方法があります。 primのコンテンツ内に作る方法と、アバターのインベントリ内に作る方法の二種類ですが、たいていの場合はprimのコンテンツ内に作成します。 何故ならスクリプトはprimのコンテンツ内に置かないと作動しないためです。 汎用的なスクリプトを作る場合な...
  • 鍵をかける
    はじめに 鍵をかけることの意味操作できる人を限定する方法 鍵をかける 強制排除スクリプト はじめに やもさんより質問いただいたスクリプトについて解説です。 [やもさんからの質問] 最近自分で服を作るようになり試着の為の更衣室を用意したのですが ドアに鍵をかけるか、自分にしか開けられないドアするにはどのようにしたら良いのでしょうか? これって結構ニーズのある話だと思います。 着替えの最中は裸になることも多く、やはり人に見られたくない場合がありますので・・・。 また、Kirさんからも関連のある質問をいただきました。 [Kirさんからの質問] なんとか、オーナー限定にて動作するように改良したいのですが、 if (llDetectedKey(0) == llGetOwner()){ handle=llListen(channel, "&qu...
  • スクリプトの構成要素は?
    LSLの構成要素 通常の台本は、シーンやカット、台詞、動作などから構成されています。 一般的にはまずシーンがあり、そのシーンに含まれるカットごとに、台詞や動作が書かれています。シーンもカットも無しに、いきなり台詞だけがポツン・・・と書かれることはありません。 【一般的な台本の構成要素】 シーン:町外れの空き地カット:楽しそうに騒いでいる猫たち台詞:にゃー 動作:笑顔で尻尾を振る カット:肩を叩かれて振り向く猫 台詞:にゃ? 動作:何気ない様子で振り向く シーン、カット、台詞・動作が階層構造になっているのがわかるかと思います。 この階層構造が崩れてしまうと台本として成り立たなくなります。 同じように、LSLにも構成要素があり、各要素は階層構造になっています。 LSLの場合は「シーン」「カット」「台詞」ではなく、「状態」「きっかけ」「処理」が構成要素です。 ...
  • 基礎知識/LSLの構成要素は?
    LSLを構成する3つの要素 通常の台本は、シーンやカット、台詞、動作などから構成されています。 一般的にはまずシーンがあり、そのシーンに含まれるカットごとに、台詞や動作が書かれています。シーンもカットも無しに、いきなり台詞だけがポツン・・・と書かれることはありません。 【一般的な台本の構成要素】 シーン:町外れの空き地カット:楽しそうに騒いでいる猫たち台詞:にゃー 動作:笑顔で尻尾を振る カット:肩を叩かれて振り向く猫 台詞:にゃ? 動作:何気ない様子で振り向く シーン、カット、台詞・動作が階層構造になっているのがわかるかと思います。 この階層構造が崩れてしまうと台本として成り立たなくなります。 同じように、LSLにも構成要素があり、各要素は階層構造になっています。 LSLの場合は「シーン」「カット」「台詞」ではなく、「状態」「きっかけ」「処理」が構成要素...
  • 回転について
    はじめに 回転を扱うプログラミングは、初めての人には少々敷居の高いものです。 何故なら回転は3Dグラフィックの知識がないと理解しにくく、例えばπ(パイ)とか三角関数のように、学校の数学で習うようなものではないからです。 まったく予備知識がない状態で回転の処理に取り組むのは、非常に難解なパズルに挑むのに似ています。 そう、例えばルービックキューブを独力で解ける人なら、回転プログラムも簡単に理解できるかもしれません(^^; ある程度LSLを使いこなしている人であっても、 「回転だけは・・・」 苦手意識を持っている人も少なくないくらいです。 私が受ける質問の中でも、回転関連のものはかなり多いです。 そんなわけで、ハッキリ言って回転は難しいです(^^; にもかかわらず回転を使わないといけない場面というのは非常に多いのです。 例えば単純なドアを作るのにも、回転は出てきま...
  • 何ができるの?
    はじめに スクリプトって何だ? スクリプトで何ができるのか はじめに 日本語によるスクリプトの解説記事が少ないという嘆きの声がしばしば聞こえてくるので、微力ながらスクリプトについて基本的なところから書いてみようと思います。 想定している読者は、スクリプトの知識が無い初心者さん。 加えて、プログラミングの知識も無いことを考慮しておくつもりです。 わかりやすく書けると良いのですが(^^; スクリプトって何だ? ワールド内に存在するほとんど全てのものをプレイヤーが製作するのがSLですが、一口に「ものづくり」と言っても、いくつかの分野があります。 一つには、建物や家具、置物、アクセサリーなどの小道具の製作。 これはprimというワールド内の物体を組み合わせることで形を作ります。 一般的にはbuildと呼ばれ、SLのモデリングツールに習熟することが必要な分野です...
  • パーティクル
    パーティクルとは パーティクル関数(llParticleSystem関数) パーティクルモジュールパラメータの説明マスク・パラメータ パターン・パラメータ その他詳細パラメータ 応用編 パーティクルとは 小技というわけではありませんが、パーティクルシステムについては設定すべきパラメータが非常に多く、わかりにくいという声をしばしば聞きます。 ですので今回はパーティクルシステムの解説とサンプル・スクリプトを書いておくことにします。 パーティクルとは粒子のことです。 SLのパーティクルシステムは、煙や火、水しぶきなどの粒子を表現するための仕組みのことを言います。 スクリプトを使う以外にパーティクルを制御する方法はありません。 従って、粒子を使った表現をしようと思ったら、パーティクルシステムのスクリプトを使わなければなりません。 よく見かけるパーティクルを列...
  • 基礎知識/プリム/オブジェクト
    面? テクスチャ? 色/透明度? リンク? Rez? UUID UUIDとは (Universal Unique IDentifier)の略で、SL内のあらゆるものを識別するためのキーとして使われています。 日本語では「汎用一意識別子」という名前が付いていますが、何やら堅苦しいせいか使われているのを見たことがありません。 その名が示すとおり、UUIDとは本来SLに限ってのキーではなく、様々なものを識別するのに利用可能な汎用的な仕様です。 OSF(Open Software Foundation)というオープン仕様を色々策定している組織が定めています。 UUIDは128bitの数値(=32Byte=18446744073709551615)であり、この天文学的な数値がかぶることはほぼあり得ません。 さらに言うなら、このUUIDの生成方法も仕...
  • 基礎知識/UUID
    UUIDとは (Universal Unique IDentifier)の略で、SL内のあらゆるものを識別するためのキーとして使われています。 日本語では「汎用一意識別子」という名前が付いていますが、何やら堅苦しいせいか使われているのを見たことがありません。 その名が示すとおり、UUIDとは本来SLに限ってのキーではなく、様々なものを識別するのに利用可能な汎用的な仕様です。 OSF(Open Software Foundation)というオープン仕様を色々策定している組織が定めています。 UUIDは128bitの数値(=32Byte=18446744073709551615)であり、この天文学的な数値がかぶることはほぼあり得ません。 さらに言うなら、このUUIDの生成方法も仕様で決められており、ベースとして時間を元にしています。 つまり作成時間が異なれば、異なるUUIDが...
  • ベンダーを作ろう
    はじめに ベンダーの仕組みllSetTexture関数 タッチされたのは誰?llDetectedLinkNumber関数 画像切り替えスクリプト 今回のポイント はじめに SLでアイテムを販売するには、必ずしもスクリプトが必要になるわけではありません。 販売用のオブジェクト(ポスター、看板、箱など)を用意し、そのオブジェクトのコンテンツの中に売りたいアイテムを詰め、値段とコンテンツを販売する設定にすれば、ひとまず売ることは可能になります。 ですが、この方法はアイテム一つ(あるいは1セット)につき一つのオブジェクトが必要となり、商品が増えるに従ってprim数が増加していくという問題点があります。 また、販売用オブジェクトを並べるにはどうしてもスペースが必要になりますので、限られた店舗スペースでは、自ずと販売できるアイテムの数が限られてしまいます。 スクリプトを使ったベ...
  • 特殊効果系
    特殊効果系 アニメーション 関数・イベント名 区分 概要 定義 llGetAnimation 関数 指定アバターが実行中の基本アニメーションを得る string llGetAnimation(key id) llGetAnimationList 関数 指定アバターが実行中の全アニメーションを得る[参考]初級lsl-13 list llGetAnimationList(key id) llStartAnimation 関数 アニメーションを開始する[参考]初級lsl-13 llStartAnimation(string anim) llStopAnimation 関数 アニメーションを停止する[参考]初級lsl-13 llStopAnimation(string anim) 音 関数・イベント名 区分 概要 定義 llAdjustSoundVolume 関数 サウンドのボリュー...
  • llRezAtRoot
    llRezAtRoot llRezAtRoot(string inventory, vector pos, vector vel, rotation rot, integer param) 引数inventoryに指定したオブジェクトをrezする。 引数posで指定する位置が、オブジェクトのルートプリムのグローバル座標を意味する以外はllRezObject関数と同じ。 詳細はllRezObject関数を参照。 名前 コメント
  • 基礎知識
    基礎知識 LSLの基礎知識に関する記事をまとめてります。 LSLはプログラミング言語の一種ですので、理解を深めるためには一般的なプログラミングの基礎知識が不可欠です。 ここではLSLに限らずプログラミング全般に共通する概念の説明を含む場合があります。 Ⅰ.スクリプトとは? 「スクリプト」の意味 台本とスクリプト台本との違い まとめ Ⅰ-1.LSLの構成要素は? LSLを構成する3つの要素状態 きっかけ 処理 3つの要素の書き方 まとめ Ⅰ-2.処理とは? 処理はキモコンピュータが理解できるもの Ⅰ-2-A.変数とは? 変数変数の種類 変数の用意 変数の中身 変数から変数へ まとめ Ⅰ-2-B.定数とは? 定数もう一つの「定数」 まとめ Ⅰ-2-C.演算子とは? 演算子基本演算 異なる型同士での演算 基本演算の応用 論理演算 論理演算の応用 Ⅰ...
  • 衝突判定
    はじめに 衝突イベント 衝突版自動ドア 今回のポイント 最後に はじめに 初級スクリプトとして触れておきたい事項も最後となりました。 最後に扱うのはオブジェクトの衝突についてです。 物理オブジェクトを扱いだすと、いろいろな場面で衝突判定をしたりするのですが、通常のオブジェクトにおける衝突判定も実は結構有用です。 例えば以前、センサーを利用した自動ドアを作りました。 あのスクリプトは衝突を用いて書き直すことが可能です。 衝突・・・なんていうと猛スピードで激突するイメージかもしれませんが、lslで言う衝突はもっと軽いものも含みます。 例えばアバターが歩いてきてオブジェクトを踏んだとき、それだけで衝突のイベントが起きるのです。 自動ドアの前にマットを用意しておいて、それを踏んだらドアが開く、という古典的な仕掛けが実現できます。 実際に衝突を使った自動ド...
  • 椅子を作ろう
    build 座るための仕組み sitスクリプト build 今回は椅子を作ってみましょう。 第一回でも触れましたが、buildで椅子を作っただけでは、正しく座ることができません。 椅子はやっぱり座れたほうが心休まりますので、座れる椅子を作ることにします。 スクリプトで椅子を作り出すことも不可能ではありませんが、いきなりでは難しいので、buildツールを使って椅子の形を作ってください。 椅子の形についてはどんなものでもかまいません。 ソファであろうが、スツールであろうが、buildの練習のために好みの形の椅子を自作してみるのが良いかもしれません。 「スクリプトだけ勉強したいんだ!」 という方は、とりあえず円柱なり立方体なりで間に合わせてもOKです。 もちろん、以前に椅子を作ったことがあって、 「ちゃんと座れるようにしたいのになぁ・・・」 という方は、ぜひそ...
  • llGetNumberOfNotecardLines
    llGetNumberOfNotecardLines key llGetNumberOfNotecardLines(string name) nameに指定した名前のノートカードの行数を調べるよう要求を出し、問い合わせ番号(key型)を返す。 要求の結果はdataserver?イベントにて受け取ることができる。 指定したノートカードはオブジェクトのコンテンツ内になければならない。 dataserver?イベントでは調べた結果がstring型の引数で渡されてくるが、これをinteger型にキャストすれば行数として扱うことができる。 以下の例はノートカード"hogehoge"の行数を調べる。 default { state_entry() { llGetNumberOfNotecardLines("hogehoge"...
  • 音を鳴らそう
    はじめに サウンドを扱う関数 音の出るドア ループサウンド 今回のポイント はじめに 今回のスクリプトは簡単です。 サウンドの再生についてはもっと早くに取り上げるべきでしたが、ついつい後回しになってしまいました(^^; オブジェクトにちょっとした音を組み込むことは、簡単なわりに効果的です。 例えば照明のON/OFFをするときにスイッチ音を付けたり、アニメーションと一緒に効果音を付けたりするだけで、よりリアルで面白いものを実現することができます。 基本的にはスクリプトで実現できる音とは、効果音のことだと思ってください。 BGMのような長いサウンドを鳴らすことは容易ではありません。 というのも、SLにアップロード可能なサウンドは10秒以内に限られているためです。 今回は簡単な例として、以前作ったドアのスクリプトに、開閉の音を組み込んでみたいと思います。 ...
  • llRequestSimulatorData
    llRequestSimulatorData key llRequestSimulatorData(string simulator, integer data) 引数simulatorに指定した名前のSIMの情報の取得要求を出す。 SIM名は大文字・小文字を区別せずに指定可能だが、似たような名前のSIMが他にあると、間違ったSIMの情報を返してくることがあるらしい。なので正確に指定するべきである。 情報が取得できるとdataserver?イベントが発生する。 その際、llRequestSimulatorData関数の戻り値が識別キーとして通知されるので、戻り値は忘れないよう控えておくこと。 要求する情報は引数dataで指定する。 dataには以下の値を指定できる。 定数名 値 説明 DATA_SIM_POS 5 SIMのグローバル座標をvector...
  • llResetScript
    llResetScript llResetScript() スクリプトをリセットする。 リセットを行うと以下のようになる。 変数の値はクリアされ、初期値に戻る 未処理のイベントは全てクリアされて無かったことになる ステートはdefaultになり、state_entry?イベントが実行される。 スクリプトエディターの「リセット」ボタンを押すのと一緒。 よく見かけるのは以下のコード。 default { : (略) : on_rez(integer start_param){ llResetScript(); } : (略) : } 上記のコードはrezされたときに必ずスクリプトをリセットする。 変数やステートを保持しないタイプのスクリプトであればこれでOK。 ...
  • llPassTouches
    llPassTouches llPassTouches(integer pass) 子primで発生したタッチイベントをルートprimにも通知するかどうかを設定する。 引数passにTRUEを指定した場合はルートprimにも通知され、FALSEは通知されない。 通常、リンクオブジェクトにおけるタッチイベント(touch_start?、touch?、touch_end?)はprimごとに発生する。 しかしながら子prim内にタッチイベントを処理するスクリプトが存在しない場合、代わりにルートprimでタッチイベントが処理される。 ルートprimにもタッチイベントを処理するスクリプトがなければ、そのオブジェクトはタッチに関しては何も処理を行わない。 従って、もしも子primだけでタッチイベントを処理し、ルートprimではタッチイベントを処理したくない場合は、子pr...
  • llPassCollisions
    llPassCollisions llPassCollisions(integer pass) 子primで発生した衝突イベントをルートprimにも通知するかどうかを設定する。 引数passにTRUEを指定した場合はルートprimにも通知され、FALSEは通知されない。 通常、リンクオブジェクトにおける衝突イベント(collision_start?、collision?、collision_end?)はprimごとに発生する。 しかしながら子prim内に衝突イベントを処理するスクリプトが存在しない場合、代わりにルートprimで衝突イベントが処理される。 ルートprimにも衝突イベントを処理するスクリプトがなければ、そのオブジェクトは衝突に関しては何も処理を行わない。 従って、もしも子primでのみ衝突イベントを処理し、ルートprimではタッチイベントを処理し...
  • スクリプト初級
    初級スクリプト LSLに初めて触れる人向けに、なるべく実用的な例を挙げながら作り方を解説した記事です。 簡単なものから複雑なものへと進んでいきますので、最初から順に参照して下さい。 何ができるの?・・・LSLとは何か スクリプトの構成・・・ステート、イベント、処理について 初!スクリプト・・・初めてのLSL作成 椅子を作ろう・・・座れるオブジェクトの作り方 ドアを作ろう・・・タッチで開くドアの作り方 照明を作ろう・・・タッチで灯る照明の作り方 聞き耳を立てる・・・リッスンの使い方 ダイアログを使おう・・・ダイアログの使い方 看板を作ろう・・・様々な看板の作り方 ベンダーを作ろう・・・テクスチャの切り替え方法 お金を扱う・・・お金のやり取りをする方法 ノートを使おう・・・ノートカードからデータを読み込む方法 アニメさせよう・・・アニメーションの使い方 ポーズボール・・・座るとアニ...
  • llGetNotecardLine
    llGetNotecardLine key llGetNotecardLine(string name, integer line) オブジェクトのコンテンツ内にあるノートカードnameのline行目を読み取るよう要求を出し、問い合わせ番号(key型)を返す。 要求の結果はdataserver?イベントにて受け取ることができる。 この関数の詳細な使い方については「ノートを使おう(初級スクリプト第十二回)」の記事を参照。 名前 コメント
  • @wiki全体から「リモートロード」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索

記事メニュー
目安箱バナー