BlackSheep-LSL@Wiki内検索 / 「スクリプト小技」で検索した結果

検索 :
  • スクリプト小技
    LSLの常套手段やちょっと気の利いた使い方、特殊な関数など、tipsのような記事です。 基本的にLSLの基礎がわかっている方向けの内容になっています。 回転について(記述中) はじめに rotation型 vector型 vectorとrotation間の変換 回転の向きについて rotationの合成 回転の合成順序 グローバル座標系とローカル座標系 リンクプリムの回転 テレポート テレポートハック 移動型テレポーター LSLで日本語を使う はじめに listenによる入力 URLエスケープの使用 その他の方法 パーティクル パーティクルとは パーティクル関数(llParticleSystem関数) パーティクルモジュールパラメータの説明マスク・パラメータ パターン・パラメータ その他詳細パラメータ 応用編 鍵をかける はじめに 鍵をかけることの意味操作...
  • メニュー
    ...を解説した記事 スクリプト小技 中級者向けのちょっとしたノウハウ記事 実験・研究 調べてみたり試したり、試行錯誤のレポート エラー対応 エラーの種類とその原因、そして対処法 BBS 質問・報告などに活用して下さい リファレンス イベント 関数(機能別) 関数(名前順) A B C D E F G H I K L M O P R S T U V W X 最近の更新 取得中です。 訪問者: -
  • 初!スクリプト
    はじめに スクリプトの作成 ハロー・アバター・スクリプト 本当にそうなってるのか? はじめに 前回はスクリプトの構成について説明しました。 「状態(ステート)」 「きっかけ(イベント)」 「反応」 の3つで構成されているという点は基礎中の基礎ですので踏まえておいて下さい。 今回は実際にSLの中でスクリプトを動かしてみたいと思います。 だらだらと説明ばかりでは飽きるでしょうし(^^; スクリプトの作成 SLにログインし、実際に作ってみましょう。 スクリプトの作り方は、厳密には2つの方法があります。 primのコンテンツ内に作る方法と、アバターのインベントリ内に作る方法の二種類ですが、たいていの場合はprimのコンテンツ内に作成します。 何故ならスクリプトはprimのコンテンツ内に置かないと作動しないためです。 汎用的なスクリプトを作る場合な...
  • スクリプトの構成
    はじめに スクリプトの構成 例えば、犬 はじめに スクリプトはSL内のオブジェクトを面白く、リアルにする「仕組み」であると前回説明しました。 今回は、 「仕組みって・・・どんなふうになってるの?」 という点について説明したいと思います。 前回よりも具体的なスクリプトの構成についてです。 スクリプトの構成 ここで言う「仕組み」というのは、「何らかのきっかけに応じて何らかの反応を返す」ことだと考えて下さい。 例えば、 きっかけ「雨に濡れる」>反応「風邪をひく」 きっかけ「殴りかかる」>反応「殴り返される」 きっかけ「愛を告白する」>反応「ふられる」 などのようにです。 スクリプトとは極論すると、 「○○をしたとき」>「××をする」 という、きっかけと反応の羅列です。 こういうプログラミング構造のことをイベントドリブン型と言い、SLのスクリ...
  • スクリプト初級
    初級スクリプト LSLに初めて触れる人向けに、なるべく実用的な例を挙げながら作り方を解説した記事です。 簡単なものから複雑なものへと進んでいきますので、最初から順に参照して下さい。 何ができるの?・・・LSLとは何か スクリプトの構成・・・ステート、イベント、処理について 初!スクリプト・・・初めてのLSL作成 椅子を作ろう・・・座れるオブジェクトの作り方 ドアを作ろう・・・タッチで開くドアの作り方 照明を作ろう・・・タッチで灯る照明の作り方 聞き耳を立てる・・・リッスンの使い方 ダイアログを使おう・・・ダイアログの使い方 看板を作ろう・・・様々な看板の作り方 ベンダーを作ろう・・・テクスチャの切り替え方法 お金を扱う・・・お金のやり取りをする方法 ノートを使おう・・・ノートカードからデータを読み込む方法 アニメさせよう・・・アニメーションの使い方 ポーズボール・・・座るとアニ...
  • llParticleSystem
    ... 詳細な使用方法は「スクリプト小技」カテゴリの「パーティクル」を参照。 なお、パーティクルはクライアントサイドで実行される効果である。 パーティクルが設定されたオブジェクトがクライアントの視界に入ったタイミングで、どのような動きのパーティクルを発生させるかがクライアントに通知される。 あとはクライアントがそのパラメータに基づき、勝手にパーティクルを表示する仕組みになっている。 従って、パーティクルの見え方は厳密に言えばクライアントごとに異なる(例えば10秒ごとに噴射するパーティクルがあったとして、全てのクライアントで同じタイミングで噴射されているとは限らない)。 描画処理はあくまでもクライアント側であるので、サーバーの負荷は比較的軽微であるが、大量の粒子の動きを計算・描画するパーティクルの性質上、クライアント側の負荷には成り得る。 SIMそのものが不安定になる...
  • トップ
    ...及びイベントの辞典 スクリプト小技・・・中級者向けのちょっとしたノウハウ記事 makapuに頼りっきりですので大変助かります。 -- jackfield (2007-09-12 16 09 19) 素敵です!またしてもみんなの役に立ちそう。メニューもわかりやすいです。 -- neron (2007-09-21 23 22 59) 助かりました。ホントにありがたいです。 -- Rios (2007-12-05 01 24 24) 初めまして。解説サイトは助かります。これからもヨロシクお願いします -- 名無しさん (2008-10-13 18 13 55) 初めまして。ありきたりな言葉ですが、必要なことが必要な分纏まっていてとても助かります。 -- 名無しさん (2009-03-31 16 24 56) 初めまして。とても分かりやすいです。これからも...
  • 基礎知識/スクリプトとは?
    「スクリプト」の意味 スクリプトという言葉は、日常生活の中ではまず耳にすることが無いかと思います。 英語で書くとscriptですが、まずはこの単語の意味から調べてみることにします。もし英和辞書をお持ちでしたら引いてみて下さい。何と書かれているでしょうか? 辞書が手元にない方のために、私が調べた答えを載せますが、 演劇や映画、ラジオ、テレビなどの台本。脚本。 これがscriptの意味です。 台本とスクリプト 台本や脚本というと、場面に応じた動きや台詞が書かれたものです。 シーン1、魚屋・昼下がり  魚屋が手に鯖を持って笑顔で店頭に立っている。  魚屋「らっしゃい、らっしゃい」  カメラ:上方向にPAN  魚屋の屋根の上に不適な面構えの猫が仁王立ちになっている。  猫、忍者のように屋根を駆け下りる。  魚屋、猫の気配に屋根を見...
  • カメラ制御
    ...メラ制御については、スクリプト小技の記事「高度なカメラ制御」を参照して下さい。 短めですが、今回はこれにて。 名前 コメント
  • 何ができるの?
    はじめに スクリプトって何だ? スクリプトで何ができるのか はじめに 日本語によるスクリプトの解説記事が少ないという嘆きの声がしばしば聞こえてくるので、微力ながらスクリプトについて基本的なところから書いてみようと思います。 想定している読者は、スクリプトの知識が無い初心者さん。 加えて、プログラミングの知識も無いことを考慮しておくつもりです。 わかりやすく書けると良いのですが(^^; スクリプトって何だ? ワールド内に存在するほとんど全てのものをプレイヤーが製作するのがSLですが、一口に「ものづくり」と言っても、いくつかの分野があります。 一つには、建物や家具、置物、アクセサリーなどの小道具の製作。 これはprimというワールド内の物体を組み合わせることで形を作ります。 一般的にはbuildと呼ばれ、SLのモデリングツールに習熟することが必要な分野です...
  • llGetFreeMemory
    llGetFreeMemory integer llGetFreeMemory() スクリプトが使用可能な残りメモリ容量(単位byte)を返す。 各スクリプトが利用可能なメモリ容量は一律16Kbyteである。 このメモリ容量の中にはスクリプトのバイトコード、スタックメモリ、ヒープメモリが含まれる。 極々簡単に言ってしまうなら、スクリプトのバイトコードとはスクリプト本体のことであり、スタックメモリは関数の呼び出し時に使われる領域、ヒープは変数の格納領域である。 すなわち、以下のような事柄がメモリを消費する要因になる。 巨大なスクリプト  1スクリプト内に全ての処理を書くには限界がある。  スクリプトで実装する機能が膨大な場合はモジュール化(複数のスクリプトに分けてリンクメッセージ等でやり取りする方法)を考慮する。 関数のネスト  大量のユーザー...
  • llGetObjectDesc
    llGetObjectDesc string llGetObjectDesc() オブジェクトまたはprimの説明(ディスクリプション)を返す。 ディスクリプションとはbuild画面のprim名を編集する欄の下にある説明欄の内容である。 この関数はスクリプトが含まれているprimのディスクリプションを返す。 スクリプトがルートprimに入っている場合はオブジェクトのディスクリプションを返す。 ディスクリプションをスクリプトから書き換えるにはllSetObjectDesc?関数を使用する。 このGetObjectDesc();とllSetObjectDescですが、意外に強力な使い方が出来ます。…という言うのもスクリプトがリセットされても内容を保持しているからです。スクリプトの内部変数を保存する保存エリアとして非常に貴重です。しかし、残念なことに不具合が...
  • llResetOtherScript
    llResetOtherScript llResetOtherScript(string name) 引数nameで指定したスクリプトをリセットする。 指定できるのはこの関数を実行するスクリプトと同一のオブジェクトコンテンツ内にあるスクリプトに限る。 ランタイムエラーで停止しているスクリプトはリセットできないらしいが、未検証。 名前 コメント
  • llGiveInventory
    llGiveInventory llGiveInventory(key destination, string inventory) オブジェクトのコンテンツから引数destinationに指定したUUIDの対象にアイテムinventoryを渡す。 渡す先のUUIDには、アバターまたはオブジェクトを指定できるが、オブジェクトに対してモノを渡す場合には、同一SIM内にあるオブジェクトでなければならない。 アバターに渡す場合は、どこにいようと結構です。オフラインでも結構です。 権限さえ問題なければ、基本的には何でもかんでも渡すことが可能。 オブジェクトに渡すときには、渡す先がllAllowInventoryDrop(TRUE)になっているとか、mod権限持っているとかすれば良い。 ただしスクリプトを渡しても、勝手にスクリプトが実行されることはない。 渡したあとでスク...
  • llSensor
    llSensor llSensor(string name, key id, integer type, float range, float arc) 引数に指定した条件でセンサーを一度だけ実行する。 引数nameには探知対象の名前を指定する。 例えば「Miz」というアバターやオブジェクトを探したいときは、ここに"Miz"を指定。 探知対象の名前がわからない場合、または複数の異なる探知対象の名前がある場合は空文字""を指定する。 引数idは探知対象のUUID。 NULL_KEYを指定すると、全てのUUIDが探知対象になる。 引数typeは探知対象のタイプ。 どんなタイプのものを探すのかを指定する。 指定できるのは以下の4タイプ。定数を使って指定できる。 定数名 値 説明 AGENT 1 アバ...
  • 椅子を作ろう
    build 座るための仕組み sitスクリプト build 今回は椅子を作ってみましょう。 第一回でも触れましたが、buildで椅子を作っただけでは、正しく座ることができません。 椅子はやっぱり座れたほうが心休まりますので、座れる椅子を作ることにします。 スクリプトで椅子を作り出すことも不可能ではありませんが、いきなりでは難しいので、buildツールを使って椅子の形を作ってください。 椅子の形についてはどんなものでもかまいません。 ソファであろうが、スツールであろうが、buildの練習のために好みの形の椅子を自作してみるのが良いかもしれません。 「スクリプトだけ勉強したいんだ!」 という方は、とりあえず円柱なり立方体なりで間に合わせてもOKです。 もちろん、以前に椅子を作ったことがあって、 「ちゃんと座れるようにしたいのになぁ・・・」 という方は、ぜひそ...
  • llResetScript
    llResetScript llResetScript() スクリプトをリセットする。 リセットを行うと以下のようになる。 変数の値はクリアされ、初期値に戻る 未処理のイベントは全てクリアされて無かったことになる ステートはdefaultになり、state_entry?イベントが実行される。 スクリプトエディターの「リセット」ボタンを押すのと一緒。 よく見かけるのは以下のコード。 default { : (略) : on_rez(integer start_param){ llResetScript(); } : (略) : } 上記のコードはrezされたときに必ずスクリプトをリセットする。 変数やステートを保持しないタイプのスクリプトであればこれでOK。 ...
  • ステートのこと
    はじめに ステートの復習 ステートの使いどころ ステートとグローバル変数グローバル変数 ステートの注意点 今回のポイント はじめに 今回はスクリプトの構成について少し突っ込んだ話をします。 具体的に実用性のあるスクリプトは出てきませんが、自分で1からスクリプトを書こうというとき、構成をどうするか考える際の参考にしていただければと思います。 このwikiの記事では、最初の頃にスクリプトの構成について触れました。 「ステート」「イベント」「処理」の3つの要素で成り立っているという話です。 私はこの3つがスクリプトの基本要素であると説明し、スクリプトを書く際には作ろうとしている機能がどんな「ステート」「イベント」「処理」になるのか意識すると良いと書いてきましたが、実際には「ステート」がどんな時に登場するのか、いまひとつハッキリしないという方もいらっしゃるのではないで...
  • llRemoteLoadScriptPin
    llRemoteLoadScriptPin llRemoteLoadScriptPin(key target, string name, integer pin, integer running, integer start_param) 引数targetで指定されるUUIDのオブジェクトに対し、引数nameのスクリプトをリモートロードする。 リモートロードは引数pinで識別され、引数runningにはリモートロード後のスクリプトの有効/無効状態を指定する。 また、引数start_paramの値はリモートロード後のスクリプトからllGetStartParameter関数で取得できる。 引数targetで指定されるUUIDのオブジェクトは、リモートロード元のオブジェクトと同一SIM上になければならない。 引数pinはリモートロードのセキュリティ確保のために用意さ...
  • 制御系
    制御系 パーミッション 関数・イベント名 区分 概要 定義 run_time_permissions イベント パーミッション要求に返答があったとき[参考]初級lsl-11 run_time_permissions(integer perm) llGetPermissions 関数 スクリプトのパーミッション情報を知る integer llGetPermissions() llGetPermissionsKey 関数 スクリプトの保持しているパーミッション対象者のUUIDを得る[参考]初級lsl-13 key llGetPermissionsKey() llRequestPermissions 関数 パーミッションを要求する[参考]初級lsl-11 llRequestPermissions(key agent, integer perm) コントロール 関数・イベント名 区...
  • LSLで日本語を使う
    はじめに listenによる入力 URLエスケープの使用 その他の方法 はじめに 2007年4月現在、スクリプトやノートカードの日本語対応は十分とは言えません。 スクリプトのコード内やノートカードに日本語を書くと化けてしまい、llSayで発言させたり、llSetTextで表示したりすることができません。 しかしながら、日本人街などにおいては日本語を使ったメッセージを表示させたいという要望はしばしばあり、苦労している方もいらっしゃるのではないでしょうか。 スクリプトで日本語を扱う方法はいくつかありますが、基本的なものを紹介しておきます。 listenによる入力 直接スクリプトエディタに入力すると化けてしまう日本語ですが、実はlistenで正しく入力することができます。 以下のような単純なエコースクリプトで試してみて下さい。 01 default { 0...
  • llGetScriptState
    llGetScriptState integer llGetScriptState(string name) 引数nameに指定したスクリプトが稼働中なのか、それとも停止中なのかを判定する。 nameに指定するのはオブジェクトのコンテンツ内にある名前でなければならない。 戻り値がTRUEだった場合は、スクリプトは生きている。 FALSEだった場合は死んでいる。 死んでるスクリプトはllResetOtherScript関数などを使って蘇らせることが可能である。 名前 コメント
  • llResetTime
    llResetTime llResetTime() スクリプトの稼働時間(秒数)をゼロにする。 スクリプトの稼働時間を取得するにはllGetTime関数を使う。 取得と同時に稼働時間をゼロにするにはllGetAndResetTime関数を使う。 これが何に使えるかと言うと、要はスクリプト内で使えるストップウォッチだと思えばよい。 スクリプト内のタイマーと言うとtimer?イベントが筆頭に上がるが、timer?イベントは一定時間ごとにアラームを発する目覚まし時計のようなものなので、細かい時間の計測には向かない。 例えば以下のコードはrotationの掛け算を30回行うのに要した秒数を計測する。 default{ touch_start( integer total_number ){ integer i; rotation r1 ...
  • モジュール化
    はじめに スクリプトのサイズ モジュール化の概念 モジュール化の手法 ドア・システム・スクリプト基本的なモジュールslide door module standard door module door main module short touch module group touch module 拡張モジュールsensor module phantom door module モジュール化の効果 モジュール化のデメリット はじめに LSLでは巨大なプログラムを作ることができません。 というのも一つのLSLのサイズは16KByteまでという制限があるためです。 この制限は、スクリプトコードの本体のサイズだけでなく、スクリプトが動作したときのメモリを含めたサイズです。 スクリプトを正しく書いていても、サイズが大きくなって16KByteの制限を越えてしまうと、 「St...
  • llGetStartParameter
    llGetStartParameter integer llGetStartParameter() スクリプトのスタートパラメータを返す。 スタートパラメータとはllRezObject関数やllRemoteLoadScriptPin関数で指定された整数値のことである。 on_rez?イベントに渡される引数と同値。 通常の方法で(単純に保存した、インベントリからオブジェクトにドロップした等)スクリプトが開始されたときにはスタートパラメータはゼロである。 また、llRezObject関数などでスタートパラメータが指定されていた場合でも、スクリプトがリセットされるとスタートパラメータはゼロに戻る。 名前 ...
  • 衝突判定
    はじめに 衝突イベント 衝突版自動ドア 今回のポイント 最後に はじめに 初級スクリプトとして触れておきたい事項も最後となりました。 最後に扱うのはオブジェクトの衝突についてです。 物理オブジェクトを扱いだすと、いろいろな場面で衝突判定をしたりするのですが、通常のオブジェクトにおける衝突判定も実は結構有用です。 例えば以前、センサーを利用した自動ドアを作りました。 あのスクリプトは衝突を用いて書き直すことが可能です。 衝突・・・なんていうと猛スピードで激突するイメージかもしれませんが、lslで言う衝突はもっと軽いものも含みます。 例えばアバターが歩いてきてオブジェクトを踏んだとき、それだけで衝突のイベントが起きるのです。 自動ドアの前にマットを用意しておいて、それを踏んだらドアが開く、という古典的な仕掛けが実現できます。 実際に衝突を使った自動ド...
  • llPassCollisions
    llPassCollisions llPassCollisions(integer pass) 子primで発生した衝突イベントをルートprimにも通知するかどうかを設定する。 引数passにTRUEを指定した場合はルートprimにも通知され、FALSEは通知されない。 通常、リンクオブジェクトにおける衝突イベント(collision_start?、collision?、collision_end?)はprimごとに発生する。 しかしながら子prim内に衝突イベントを処理するスクリプトが存在しない場合、代わりにルートprimで衝突イベントが処理される。 ルートprimにも衝突イベントを処理するスクリプトがなければ、そのオブジェクトは衝突に関しては何も処理を行わない。 従って、もしも子primでのみ衝突イベントを処理し、ルートprimではタッチイベントを処理し...
  • llPassTouches
    llPassTouches llPassTouches(integer pass) 子primで発生したタッチイベントをルートprimにも通知するかどうかを設定する。 引数passにTRUEを指定した場合はルートprimにも通知され、FALSEは通知されない。 通常、リンクオブジェクトにおけるタッチイベント(touch_start?、touch?、touch_end?)はprimごとに発生する。 しかしながら子prim内にタッチイベントを処理するスクリプトが存在しない場合、代わりにルートprimでタッチイベントが処理される。 ルートprimにもタッチイベントを処理するスクリプトがなければ、そのオブジェクトはタッチに関しては何も処理を行わない。 従って、もしも子primだけでタッチイベントを処理し、ルートprimではタッチイベントを処理したくない場合は、子pr...
  • rez!
    はじめに rezするllRezObject rezされるon_rez?(integer param) temp rezスクリプト 今回のポイント はじめに 初級者向けに説明すべきことはもはやほとんど残っていません(^^; もちろん、lslに関してはまだまだ膨大な機能があり、触れていない部分は多いのですが、あくまでも「初級」ということであれば、残っているのは今回扱うrezを含めて2、3の項目くらいかと思います。 ちなみに今まで一切触れてこなかった機能として、物理系のスクリプトがあります。 物理系のスクリプトとは、SL内の物理的なオブジェクトを扱うための関数群のことです。 例えば加速させたり、重力を無くしたり、コマのように回転する力を加えたりできるのですが、これらの関数についてはスクリプトの知識というよりはSL内物理学の知識が必要になってきますので、初級者向けの対象外と...
  • お金を扱う
    はじめに buyとpaymoneyイベント 金返せ!llSetPayPrice関数 llGiveMoney関数 パーミッションllRequestPermissions関数 run_time_permissionsイベント アイテムの存在確認llGetInventoryType関数 ベンダースクリプト 今回のポイント はじめに ベンダー作成の続きです。 簡単なようでいて、意外に面倒なのがベンダーです(^^; やはりお金を扱うスクリプトですから、間違いのないような仕組みにしておかなければいけません・・・。 前回はタッチして商品の画像を切り替えるスクリプトを作りました。 今回はお金を受け取って商品を渡す部分に取り組みます。 そこまで出来ればベンダーとしては最低限のものにはなるでしょう。 buyとpay buildツールをいじっていて、オブジェクトをクリックした...
  • 照明を作ろう
    はじめに build ライト効果の設定 初めての照明スクリプト 同じ処理をまとめよう 今回のポイント はじめに 椅子、ドアと作ってきたことで、だいぶスクリプトの構成については理解できてきたと思います。 今回はさらに練習として、照明を作ってみましょう。 ただの照明では面白くありませんので、カラフルに色が変わるものにしたいと思います。 build お好みで照明器具を作りましょう。 ランプ型、蛍光灯型、電球型、なんでも構いません。 私はこんなのを作りました。 Snapshot_107.jpg 手抜きなスタンドライトですw ライト効果の設定 今回のスクリプトは、タッチするたびに照明の色が変わるものにしましょう。 最初は明かりがついていなくて、タッチすると赤く光り、次にタッチすると緑、さらにタッチすると青、もう一度タッチすると照明が消える(...
  • センサーを使おう
    はじめに センサーの仕組みセンサー関数llSensor(string name, key id, integer type, float range, float arc) llSensorRepeat(string name, key id, integer type, float range, float arc, float rate) llSensorRemove(); センサーイベント 自動ドアスクリプト 今回のポイント はじめに 今回はセンサーについて見てみましょう。 センサーというのは、スクリプトによって近くのアバターやオブジェクトを検知する仕組みのことを言います。 最も単純な使い方としては、自動ドアなどが考えられます。 また、翻訳機などでは近くにいる人をダイアログに出力し、誰の言葉を翻訳するか指定できるようにしているものもあります。 このとき近くにい...
  • デモ商品を作ろう
    はじめに デモ用商品の仕組み アタッチの制御llDetachFromAvatar(); attach?(key attached) llDie(); デモ商品用スクリプト 今回のポイント はじめに 今回はデモ用の商品を作る方法について書こうと思います。 デモ用とは、例えば一定期間のみ使用可能なもの、特定回数使ったら使えなくなるようなサンプル商品です。 当然ながら、スクリプトを使って制御をしますので、スクリプトが組み込めない商品(スキン・服・テクスチャ・アニメーションなど)に関してはここで解説する方法は使えません。 スクリプトが組み込める商品であれば、どんなものにも応用は利きますが、今回は特にアタッチメントについて見ていきます。 というのも、アタッチを制御するスクリプトについて今まで説明していないからです(^^; デモ用商品のスクリプトを通して、スクリプトによ...
  • llOverMyLand
    llOverMyLand integer llOverMyLand(key id) スクリプトオーナーの土地上にいるかどうかを調べる。 戻り値がTRUEならばオーナーの土地、FALSEならば違う土地である。 スクリプトがグループ所有であれば、グループ所有の土地上でTRUEを返す。 名前 コメント
  • llGetTime
    llGetTime float llGetTime() スクリプトが最後にリセットされてからの秒数、もしくは前にllResetTime関数やllGetAndResetTime関数を実行したときからの秒数を返す。 要するにスクリプトの稼動秒数を取得するための関数であると考えれば良い。 時刻や日付を取得する関数ではないので注意。 名前 コメント
  • llClearCameraParams
    llClearCameraParams llClearCameraParams() スクリプトで制御していたカメラのパラメータを全てリセットしてデフォルト状態に戻す。 使用する際にはPERMISSION_CONTROL_CAMERAパーミッションが必要である。 スクリプトからカメラを制御するにはllSetCameraParams関数を使う。
  • 基礎知識
    基礎知識 LSLの基礎知識に関する記事をまとめてります。 LSLはプログラミング言語の一種ですので、理解を深めるためには一般的なプログラミングの基礎知識が不可欠です。 ここではLSLに限らずプログラミング全般に共通する概念の説明を含む場合があります。 Ⅰ.スクリプトとは? 「スクリプト」の意味 台本とスクリプト台本との違い まとめ Ⅰ-1.LSLの構成要素は? LSLを構成する3つの要素状態 きっかけ 処理 3つの要素の書き方 まとめ Ⅰ-2.処理とは? 処理はキモコンピュータが理解できるもの Ⅰ-2-A.変数とは? 変数変数の種類 変数の用意 変数の中身 変数から変数へ まとめ Ⅰ-2-B.定数とは? 定数もう一つの「定数」 まとめ Ⅰ-2-C.演算子とは? 演算子基本演算 異なる型同士での演算 基本演算の応用 論理演算 論理演算の応用 Ⅰ...
  • llDetectedGroup
    llDetectedGroup integer llDetectedGroup(integer number) 検知されたアバター/オブジェクトのグループが、自分自身(スクリプトを実行しているオブジェクト)のグループと同じかどうかを判定する。 同じグループだった場合はTRUE、そうでない場合はFALSEを返す。 アバターが同じグループに所属していたとしても、そのグループをアクティブにしていない場合はFALSEを返すので注意。 スクリプトを実行しているオブジェクトにグループが設定されていなかった場合は、検知されたアバター/オブジェクトがグループに所属していない(またはどのグループもアクティブにしてない)場合のみTRUEを返す。 llDetectedGroupはデテクト系の関数の一つである。 デテクト系関数についてはllDetectedKeyの説明もしくは初級ス...
  • ドアを作ろう
    build ドアスクリプトの構成 回転の処理 開けっ放しは嫌よ 今回のまとめ build 基本的なものにも関わらず、スクリプト初心者にとっては少々難しいのがドアのスクリプトです。 真横にスライドするドアならばまだ楽ですが、回転の要素が入ってくると途端に難しいと思う人が多いようですね。 前回の椅子を作る際に、回転角度の指定方法について便利な書き方を説明しましたので、今回はそれを使ってドアのスクリプトにチャレンジしてみようと思います。 例によってまずはbuildからです。 ドアの作り方にもいろいろありますが、注意していただきたいことは一点のみです。 スクリプトによる回転は、あくまでもオブジェクトの中心座標(ルート座標)を基準に行われますので、ルートの座標をドアの蝶番の位置にあうようにしなければなりません。 私は単純に、立方体を板状にした1primのドアを用意し...
  • 看板を作ろう
    はじめに フローティングテキストllSetText関数 回転看板llTargetOmega関数 アニメーション看板llSetTextureAnim関数 地図看板llSetTouchText関数 llMapDestination関数 ランドマーク看板llGiveInventoryList関数 まとめ はじめに 第六回~第八回は初級スクリプトの最初の山場でした。 へヴィな内容が続きましたので、今回はちょっと息抜き的に、しかしながら実用的なスクリプトを作ってみたいと思います。 SLで店をやるという人は多いでしょう。 そして商品の販売用や、宣伝のために、看板を作りたいという人もいるかと思います。 綺麗なテクスチャさえ用意すれば、それなりの看板を作ることができますが、この記事は一応スクリプトの勉強ですのでw、スクリプトを使った動きのある看板に挑戦してみましょう。 照明...
  • スクリプトの構成要素は?
    LSLの構成要素 通常の台本は、シーンやカット、台詞、動作などから構成されています。 一般的にはまずシーンがあり、そのシーンに含まれるカットごとに、台詞や動作が書かれています。シーンもカットも無しに、いきなり台詞だけがポツン・・・と書かれることはありません。 【一般的な台本の構成要素】 シーン:町外れの空き地カット:楽しそうに騒いでいる猫たち台詞:にゃー 動作:笑顔で尻尾を振る カット:肩を叩かれて振り向く猫 台詞:にゃ? 動作:何気ない様子で振り向く シーン、カット、台詞・動作が階層構造になっているのがわかるかと思います。 この階層構造が崩れてしまうと台本として成り立たなくなります。 同じように、LSLにも構成要素があり、各要素は階層構造になっています。 LSLの場合は「シーン」「カット」「台詞」ではなく、「状態」「きっかけ」「処理」が構成要素です。 ...
  • llSameGroup
    llSameGroup integer llSameGroup(key id); 引数idに指定したアバターまたはオブジェクトの所属グループが、スクリプト実行中のオブジェクトのグループと一致するかどうかを調べる。 一致する場合はTRUEを返し、一致しない場合はFALSEを返す。 スクリプト実行中のオブジェクトのグループが未設定(none)の場合は、引数にNULL_KEYを指定した場合のみTRUEを返す。 名前 コメント
  • llListen
    llListen integer llListen(integer channel, string name, key id, string msg) チャットチャンネルchannel番にて、名前がnameでUUIDがidのアバター/オブジェクトの発言msgをモニターする。 ある意味、キングオブLSLとも言える関数の一つ。 高機能なスクリプトを実現するには必ずと言ってもいいくらい必要になる関数である。 詳細は「聞き耳を立てる(初級スクリプト第七回)」を参照。 名前 コメント
  • llGetScriptName
    llGetScriptName string llGetScriptName() 現在実行中のスクリプト名を返す。 しばしば自動消滅ロジックを実装する際に利用する。 以下のコードは開始後30秒でスクリプトを自動消滅させる。 敵に秘密を知られたくない場合はこのような自爆装置を組み込むとMIっぽい。 default { state_entry(){ llSetTimerEvent(30.0); } timer(){ llRemoveInventory(llGetScriptName()); } } 名前 ...
  • prim間通信
    はじめに 色を変える 簡易版カラーチェンジャー 拡張性の問題 prim間通信の仕組みllMessageLinked関数 link_messageイベント カラーチェンジャースクリプト ロングタッチ 今回のポイント はじめに しばしばカツラなどに組み込まれている色変更のスクリプトを作ってみましょう。 単純に色を変えるだけのスクリプトであれば、ここまで読んできた方には簡単に出来ると思います。 ですが、今回は特にprim間の通信を行う方法使って、拡張性の高いスクリプトを考えてみたいと思います。 prim間通信とは、llMessageLinked()という関数を使い、リンクされているprim同士でメッセージをやり取りする方法です。 これを使うと、一つのprimを操作したときに、別のprimを操作することができるようになります。 色を変える primの色を変えるのは...
  • 鍵をかける
    はじめに 鍵をかけることの意味操作できる人を限定する方法 鍵をかける 強制排除スクリプト はじめに やもさんより質問いただいたスクリプトについて解説です。 [やもさんからの質問] 最近自分で服を作るようになり試着の為の更衣室を用意したのですが ドアに鍵をかけるか、自分にしか開けられないドアするにはどのようにしたら良いのでしょうか? これって結構ニーズのある話だと思います。 着替えの最中は裸になることも多く、やはり人に見られたくない場合がありますので・・・。 また、Kirさんからも関連のある質問をいただきました。 [Kirさんからの質問] なんとか、オーナー限定にて動作するように改良したいのですが、 if (llDetectedKey(0) == llGetOwner()){ handle=llListen(channel, "&qu...
  • HUDを作ろう
    はじめに HUDのbuild ボタンのスクリプト ルートのスクリプト 今回のポイント はじめに prim間通信をもう少し練習するという意味で、今回はHUDを作ってみましょう。 HUDというのはヘッドアップディスプレイ (Head-Up Display)のことで、SLでは画面上に表示されるインターフェースのことを言います。 ミニマップなども広義の意味ではHUDになるのでしょうが、SLでは特にユーザーが独自に作ったインターフェースのことを指します。 日本人にとって馴染みのあるものは翻訳機などでしょうか。 チャットの自動英語翻訳を行ってくれるJ2Eは画面左中央に表示される半円型のHUDですね。 何のHUDを作ってもいいのですが、あんまり出回ってなくて、それでいて便利そうなものが良いですね・・・。 テレポート用HUDなどはどうでしょうか。 HUDのボタンにテレポート先...
  • llDetectedType
    llDetectedType integer llDetectedType(integer number) 検知対象の種別(アバター/オブジェクト/スクリプトの有無等)を返す。 llDetectedTypeはデテクト系の関数の一つである。 デテクト系関数についてはllDetectedKeyの説明もしくは初級スクリプト第二十回「センサーを使おう」のセンサーイベントについての説明を参照のこと。 llDetectedTypeの戻り値はビットフィールドになっている。 ビットフィールドとは、いくつかの値の組み合わせであり、フィールド内の特定の値がONかOFFかは 演算によって判別する。 llDetectedType(0) AGENT → フィールド"AGENT"がONならTRUE、OFFならFALSE llDetectedType(...
  • llRemoveInventory
    llRemoveInventory llRemoveInventory(string inventory) 引数inventoryで指定した名前のアイテムをオブジェクトインベントリ(コンテンツ)から削除する。 コンテンツ内に存在しないアイテムを指定した場合は、 Missing inventory item アイテム名 というお叱りを受ける。 スクリプトが自分自身を削除する自殺コードも可能で、 llRemoveInventory(llGetScriptName()); 一定の処理をした後に自動消滅するようなスクリプトは上記の1文を最後に実行しておけば良い。 名前 ...
  • llOwnerSay
    llOwnerSay llOwnerSay(string message) スクリプトオーナーのみに聞こえるメッセージを送信する。 主にデバッグ用である。 LSLのコーディング中は、変数の中身やスクリプトの状態などをチェックしたい場合が多いが、llSayやllWhisperを使ってデバッグメッセージを送信すると、周囲にも聞こえてしまう。 かと言ってllInstantMessageを使うとメッセージの送信に2秒かかる。 llOwnerSayであれば、オーナー以外には聞こえないし、メッセージが即座に送られる。 デバッグ用にこの関数を各所に埋め込んだ場合、完成後はコメントアウトするか削除することをお忘れなく。 名前 ...
  • @wiki全体から「スクリプト小技」で調べる

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

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