BlackSheep-LSL@Wiki内検索 / 「基礎知識/リンク」で検索した結果

検索 :
  • 基礎知識
    基礎知識 LSLの基礎知識に関する記事をまとめてります。 LSLはプログラミング言語の一種ですので、理解を深めるためには一般的なプログラミングの基礎知識が不可欠です。 ここではLSLに限らずプログラミング全般に共通する概念の説明を含む場合があります。 Ⅰ.スクリプトとは? 「スクリプト」の意味 台本とスクリプト台本との違い まとめ Ⅰ-1.LSLの構成要素は? LSLを構成する3つの要素状態 きっかけ 処理 3つの要素の書き方 まとめ Ⅰ-2.処理とは? 処理はキモコンピュータが理解できるもの Ⅰ-2-A.変数とは? 変数変数の種類 変数の用意 変数の中身 変数から変数へ まとめ Ⅰ-2-B.定数とは? 定数もう一つの「定数」 まとめ Ⅰ-2-C.演算子とは? 演算子基本演算 異なる型同士での演算 基本演算の応用 論理演算 論理演算の応用 Ⅰ...
  • 基礎知識/座標系
    位置? 回転 はじめに rotation型 vector型 vectorとrotation間の変換 回転の向きについて rotationの合成 回転の合成順序 グローバル座標系とローカル座標系 リンクプリムの回転
  • 基礎知識/物理
    エネルギー? 加速度? フォース? インパルス? 質量?
  • 基礎知識/SIM
    セキュリティ? 天候? 地面?
  • 基礎知識/アバター
    アバターとはSLユーザーが操作するキャラクターのことを指します。 広義にはSLユーザーやアカウントまでも含めて「アバター」という言葉を使うこともありますが、通常はSL画面に表示される人型(稀に人型ではないヤツもいますがw)のキャラクターのことを言います。 アバターは固有の名前を持っていますが、通常の場合LSLではUUIDで識別されます。 名前についてはファーストネーム(名前)とセカンドネーム(苗字)があり、ファーストネームのほうはユーザーが自由につけることができます。 セカンドネームはリンデンが用意したものの中から一つを選ぶようになっています。 ファーストネームが同じアバターというのは存在しますが、ファーストネーム+セカンドネームとなると必ず固有の名前になります。 UUID UUIDとは (Universal Unique IDentifier)の略で、SL内のあら...
  • 基礎知識/SL世界の法則
    ここではSLの世界に特有な法則や決まりごとについての解説を行います。 例えばSLの世界には物理法則が存在しますが、その法則はリアルワールドのものとは異なっています。 他にも、SLを構成するprimについての話やテクスチャやサウンドなど、随時追加予定です。 アバター/オブジェクト アバター UUID チャット? シット? パーミッション? アタッチメント? キーコントロール? UI? カメラ? グループ? プリム/オブジェクト 面? テクスチャ? 色/透明度? リンク? Rez? UUID アイテム コンテンツ/インベントリ? アイテム アニメーション? サウンド? テクスチャ? ランドマーク? スクリプト? ワールド 座標系 位置? 回転 SIM セキュリティ? 天候? 地面? 物理 エネルギー? 加速度? フォース? インパルス...
  • 基礎知識/UUID
    UUIDとは (Universal Unique IDentifier)の略で、SL内のあらゆるものを識別するためのキーとして使われています。 日本語では「汎用一意識別子」という名前が付いていますが、何やら堅苦しいせいか使われているのを見たことがありません。 その名が示すとおり、UUIDとは本来SLに限ってのキーではなく、様々なものを識別するのに利用可能な汎用的な仕様です。 OSF(Open Software Foundation)というオープン仕様を色々策定している組織が定めています。 UUIDは128bitの数値(=32Byte=18446744073709551615)であり、この天文学的な数値がかぶることはほぼあり得ません。 さらに言うなら、このUUIDの生成方法も仕様で決められており、ベースとして時間を元にしています。 つまり作成時間が異なれば、異なるUUIDが...
  • 基礎知識/アイテム
    アニメーション? サウンド? テクスチャ? ランドマーク? スクリプト?
  • 基礎知識/定数とは?
    定数 「変数」というのは中身の値が変わるものでしたが、中身の変わらないものもあります。 それを「定数」と言います。 変数には自由な名前を付けることができるのに対し、定数はあらかじめ名前が決まっています。 例えば、「PI」という名前の定数があるのですが、この定数の実態は、 3.1415926535897932384626433832795 という小数値です。 これって要するに円周率です。 セカンドライフは3Dの仮想世界ですので、回転等の計算をするときにはしばしば円周率が登場します。 円周率が出てくるたびに、「3.141592653589…..」と数値を書くのは非常に面倒ですし、入力を間違える可能性もあります。 ですので、親切なリンデン社の誰かが、 「PIと書いたら3.1415926535897932384626433832795のことにするね...
  • 基礎知識/関数とは?
    関数 一般的に関数と言うと、 y = ax + b こんなのを思い出すかと思います。 中学校あたりの数学で出てくる「一次関数」というヤツですね。 これ、要するにxの値が変わると、それに関連してyの値も変わることから、「関数」と言われるんですね。 この数学用語を英語で言うと「function(ファンクション)」です。 ファンクションの意味を『新英和中辞典 第6版 (研究社)』で調べてみると、 1 機能,働き,作用,目的 2-a 職務,職能,職分,役目 b 【文法】 機能 3-a 儀式,行事; 祭典,祝典 b 《口語》 (規模の大きい)社交的会合,宴会 4-a 他のものに関連して変化するもの 《性質・事実など》, 相関関係 b 【数】 関数 こんなんが出てくるわけです。 最近のプログラムで“ファンクション”と言うと...
  • 基礎知識/変数とは?
    変数 「変数」とは、しばしばプログラミング解説書では「データを入れておく箱のようなもの」と説明されます。 プログラミングに特有の概念ですので、今までプログラムなんて見たことも聞いたことも食べたこともない人にとっては意味不明な存在でしょう。 まずは喩えを使って簡単に変数について説明してみたいと思います。 子供にお使いを頼むことを考えてみて下さい。 「肉屋さんへ行って、このメモに書いてあるものを買ってきて」 こんな指示を出したとしましょう。このときの「メモ」というのが変数に当たります。 メモには、「ひき肉」と書いてあるかもしれないし、「レバ刺し」と書いてあるかもしれません。 意表をついて「カボチャ」とか書いてある可能性だってあります・・・。 同じメモでも、書いてある内容によっていろいろと意味が変わってくるように、変数というのは中にいろいろなデータを書...
  • 基礎知識/処理とは?
    処理はキモ LSLを台本に喩えるならば、「処理」の部分というのは「台詞」や「動作」にあたります。 これって台本の肝となる部分ですよね。 「処理」もLSLの肝と言って差し支えない部分です。 もしも「処理」がなかったら、そのLSLは「何もしない」のですから、LSLを書く意味がまったくなくなってしまいます。 また、台本に書かれた台詞や動作によってドラマや映画の良し悪しが変わってくるように、「処理」に書かれている内容はLSLの出来を大きく左右します。 どんなに優れた俳優さんであろうと、台本がボロボロだったらその能力を発揮できません。 コンピュータは優れた能力を持っていますが、「処理」の部分が間違っていれば正しく動いてはくれません。 さらにやっかいなことには、コンピュータというのは人間ほど機転が利きません。 俳優であれば、細かな指示を与えなくても、前後のストーリ...
  • 基礎知識/演算子とは?
    演算子 まず最も基本的な演算子「=」について説明します。 「=」は「変数に代入する」という意味です。 つまり、 integer i = 100; というのは 「iに」・・・何に 「100を」・・・何を 「代入する」・・・どうする という処理になります。 「何に」「何を」という部分は変数もしくは定数になります。 「i」は整数型の変数ですし、「100」は値を直接指定した定数です。 「どうする」の部分が「=」ですが、「代入する」のように変数や定数を扱うための記号のことを「演算子(えんざんし)」と言います。 「=」は「代入演算子」と言い、「左側の変数に右側の変数の値または定数を代入」する演算子です。 単純な代入については変数のときにいくつか見てきましたので、少し応用した形をやってみましょう。 以下のような場合はどうなるでしょうか。 ...
  • 基礎知識/プリム/オブジェクト
    面? テクスチャ? 色/透明度? リンク? Rez? UUID UUIDとは (Universal Unique IDentifier)の略で、SL内のあらゆるものを識別するためのキーとして使われています。 日本語では「汎用一意識別子」という名前が付いていますが、何やら堅苦しいせいか使われているのを見たことがありません。 その名が示すとおり、UUIDとは本来SLに限ってのキーではなく、様々なものを識別するのに利用可能な汎用的な仕様です。 OSF(Open Software Foundation)というオープン仕様を色々策定している組織が定めています。 UUIDは128bitの数値(=32Byte=18446744073709551615)であり、この天文学的な数値がかぶることはほぼあり得ません。 さらに言うなら、このUUIDの生成方法も仕...
  • 基礎知識/スクリプトとは?
    「スクリプト」の意味 スクリプトという言葉は、日常生活の中ではまず耳にすることが無いかと思います。 英語で書くとscriptですが、まずはこの単語の意味から調べてみることにします。もし英和辞書をお持ちでしたら引いてみて下さい。何と書かれているでしょうか? 辞書が手元にない方のために、私が調べた答えを載せますが、 演劇や映画、ラジオ、テレビなどの台本。脚本。 これがscriptの意味です。 台本とスクリプト 台本や脚本というと、場面に応じた動きや台詞が書かれたものです。 シーン1、魚屋・昼下がり  魚屋が手に鯖を持って笑顔で店頭に立っている。  魚屋「らっしゃい、らっしゃい」  カメラ:上方向にPAN  魚屋の屋根の上に不適な面構えの猫が仁王立ちになっている。  猫、忍者のように屋根を駆け下りる。  魚屋、猫の気配に屋根を見...
  • 基礎知識/フロー制御とは?
    フロー制御 フロー制御というのは、条件によって実行するコードを変えたり、繰り返し処理を行ったりするものを言います。 プログラムの処理の流れ(フロー)をコントロールするものなので、「フロー制御」と呼ばれます。 まずはフロー制御の種類を挙げておきます。 フロー制御 説明 if-else 条件分岐。条件に応じて実行するコードを変える。 whle ループ処理。条件を満たす間延々と繰り返し処理を行う。 do-while ループ処理。処理を行った後、条件を満たす場合は繰り返す。 for ループ処理。条件を変化させながら繰り返し処理を行う。 return 復帰(リターン)。ユーザー関数やイベントを終了する。 jump ジャンプ。指定したコードの行に処理を飛ばす。 state ステート。LSLのステートを変更する。 if-else フロー制御の中でも最も使用頻度が高いのがif...
  • 基礎知識/LSLの構成要素は?
    LSLを構成する3つの要素 通常の台本は、シーンやカット、台詞、動作などから構成されています。 一般的にはまずシーンがあり、そのシーンに含まれるカットごとに、台詞や動作が書かれています。シーンもカットも無しに、いきなり台詞だけがポツン・・・と書かれることはありません。 【一般的な台本の構成要素】 シーン:町外れの空き地カット:楽しそうに騒いでいる猫たち台詞:にゃー 動作:笑顔で尻尾を振る カット:肩を叩かれて振り向く猫 台詞:にゃ? 動作:何気ない様子で振り向く シーン、カット、台詞・動作が階層構造になっているのがわかるかと思います。 この階層構造が崩れてしまうと台本として成り立たなくなります。 同じように、LSLにも構成要素があり、各要素は階層構造になっています。 LSLの場合は「シーン」「カット」「台詞」ではなく、「状態」「きっかけ」「処理」が構成要素...
  • メニュー
    解説 基礎知識 LSLの基礎的な概念・用語等の説明 スクリプト初級 実践的な例を挙げながらLSLの基本を解説した記事 スクリプト小技 中級者向けのちょっとしたノウハウ記事 実験・研究 調べてみたり試したり、試行錯誤のレポート エラー対応 エラーの種類とその原因、そして対処法 BBS 質問・報告などに活用して下さい リファレンス イベント 関数(機能別) 関数(名前順) A B C D E F G H I K L M O P R S T U V W X 最近の更新 取得中です。 訪問者: -
  • トップ
    このWikiについて BlackSheep-LSL@wikiはMakapu改めBlackSheep-LSL@SLMameの移転サイトです。 セカンドライフのスクリプト(LSL)について解説するwikiです。 特に「何かやってみたいのだけれども、何をどうしていいのか」わからない方に向けて、なるべく初歩的なところからLSLについて説明を試みています。 LSLの考え方や作り方を理解し、「面白いな~」と思った方がさらに高度なものを作り出すための足がかりにでもなれば幸いです。 なお、掲載しているスクリプトや情報については、素人仕事ですので、記述ミスや勘違いなどが無いとは言えません。 間違いに気づいた方はご指摘下さると助かります。 また、特に断りがない限りは掲載のコードはフリーのサンプルです。 自由に利用して実用化・商品化していただいて構いませんが、動作を保証するものではありませ...
  • 回転について
    はじめに 回転を扱うプログラミングは、初めての人には少々敷居の高いものです。 何故なら回転は3Dグラフィックの知識がないと理解しにくく、例えばπ(パイ)とか三角関数のように、学校の数学で習うようなものではないからです。 まったく予備知識がない状態で回転の処理に取り組むのは、非常に難解なパズルに挑むのに似ています。 そう、例えばルービックキューブを独力で解ける人なら、回転プログラムも簡単に理解できるかもしれません(^^; ある程度LSLを使いこなしている人であっても、 「回転だけは・・・」 苦手意識を持っている人も少なくないくらいです。 私が受ける質問の中でも、回転関連のものはかなり多いです。 そんなわけで、ハッキリ言って回転は難しいです(^^; にもかかわらず回転を使わないといけない場面というのは非常に多いのです。 例えば単純なドアを作るのにも、回転は出てきま...
  • スクリプト小技
    LSLの常套手段やちょっと気の利いた使い方、特殊な関数など、tipsのような記事です。 基本的にLSLの基礎がわかっている方向けの内容になっています。 回転について(記述中) はじめに rotation型 vector型 vectorとrotation間の変換 回転の向きについて rotationの合成 回転の合成順序 グローバル座標系とローカル座標系 リンクプリムの回転 テレポート テレポートハック 移動型テレポーター LSLで日本語を使う はじめに listenによる入力 URLエスケープの使用 その他の方法 パーティクル パーティクルとは パーティクル関数(llParticleSystem関数) パーティクルモジュールパラメータの説明マスク・パラメータ パターン・パラメータ その他詳細パラメータ 応用編 鍵をかける はじめに 鍵をかけることの意味操作...
  • llCreateLink
    llCreateLink llCreateLink(key target, integer parent) オブジェクトをリンクさせる。 引数targetにはリンク相手のUUIDを指定する。 parentにTRUEを指定した場合は自分(スクリプトを含むオブジェクト)が親となり、FALSEを指定した場合はtargetのオブジェクトが親となる。 この関数を実行するにはPERMISSION_CHANGE_LINKSパーミッションを取得する必要がある。 相手先のオブジェクトにはパーミッションがなくても良いが、双方のオブジェクトのオーナーが同一で、かつmodify権限を持っていなければならない。 アタッチメントやsit中のオブジェクトはリンク/リンク解除を行うことはできないという制限もある。 リンクが実行されるとchangedイベントが発生するが、このときのフラグは...
  • llGetLinkNumber
    llGetLinkNumber integer llGetLinkNumber() 自分自身のリンクナンバーを返す。 この関数が単一primで使用された場合には0、ルートprimにおいて使用された場合は1が返る。 子primにて使用された場合はそのprimのリンクナンバーが返る。 子primのリンクナンバーを調べる際に利用する関数であるが、リンクナンバーに頼った実装はオススメできない。 というのもオブジェクトが編集されるとリンクナンバーは変動する可能性があるためである。 よりメンテナンス性の高い実装については、llDetectedLinkNumber及びllGetLinkNameを参照。 名前 ...
  • モジュール化
    はじめに スクリプトのサイズ モジュール化の概念 モジュール化の手法 ドア・システム・スクリプト基本的なモジュール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...
  • llGetLinkName
    llGetLinkName string llGetLinkName(integer linknum) linknumで示されるリンクprimの名前を返す。 オブジェクトが単一primの場合、linknumに指定できる有効な値は0のみである。 オブジェクトがリンクされている場合は、ルートprimのリンクナンバーは1となり、2以降は子primである。 以下の例はリンクオブジェクトにおいて、タッチされたprimの名前を返す。 default { touch_start(integer detected){ llSay(0, "Touched prim is " + llGetLinkName(llDetectedLinkNumber(0))); } } この関数はオブジェクト上の「ボタン」を実装する際に有用である。 タッチさ...
  • llGetLinkKey
    llGetLinkKey key llGetLinkKey(integer linknum) linknumで示されるリンクprimのUUIDを返す。 オブジェクトが単一primの場合、linknumに指定できる有効な値は0のみである。 オブジェクトがリンクされている場合は、ルートprimのリンクナンバーは1となり、2以降は子primである。 以下の例はリンクオブジェクトにおいて、タッチされたprimのUUIDを返す。 default { touch_start(integer detected){ llSay(0, "UUID of touched prim is " + (string)llGetLinkKey(llDetectedLinkNumber(0))); } } ...
  • llBreakLink
    llBreakLink llBreakLink(integer linknum) 指定したリンクナンバーのprimのリンクを解除する。 通称、縁切り関数。 この関数を実行するにはPERMISSION_CHANGE_LINKSパーミッションを取得していなければならない。 タッチしたprimのリンクを外す例。 integer link_number; default { touch_start(integer num_detected) { if (llDetectedKey(0) == llGetOwner()){ link_number = llDetectedLinkNumber(0); llRequestPermissions(llDetectedKey(0), PERMISSION_CHANGE_LI...
  • llMessageLinked
    llMessageLinked llMessageLinked(integer linknum, integer num, string str, key id) リンクオブジェクトにおいてprim間メッセージを送信する。 引数linknumは送信先primのリンクナンバーである。 num、str、idの引数には任意のデータを指定することができる。 リンクメッセージが受信されるとlink_message?イベントが起こる。 link_message?イベントの引数には、llMessageLinked関数によって送信されたnum、str、idの各引数が渡される。 つまり、 1, "test", NULL_KEY という3つのデータを送信すれば、 1, "test", NULL_KEY という3つの値がlink_...
  • llDetectedLinkNumber
    llDetectedLinkNumber integer llDetectedLinkNumber(integer number) タッチもしくは衝突イベントがどのprimにおいて起こったのかを取得する。 戻り値はリンクナンバーである。 例えばタッチイベント内で使用した場合は、タッチされたprimのリンクナンバーを返す。 衝突イベント内であれば、衝突したprimのリンクナンバーを返す。 オブジェクトが単一primの場合は、戻り値は0である。 2つ以上のprimがリンクされていた場合、ルートprimは1、2以降は子primとなる。 この関数はタッチイベントもしくは衝突イベント内でしか効果がない。 llDetectedLinkNumberはデテクト系の関数の一つである。 デテクト系関数についてはllDetectedKeyの説明もしくは初級スクリプト第...
  • アバター/オブジェクト系
    アバター/オブジェクト系 アバター 関数・イベント名 区分 概要 定義 llGetAgentInfo 関数 指定アバターの状態を得る(飛行・AWAYなどの動作及びアタッチメントの有無等) integer llGetAgentInfo(key id) llGetAgentSize 関数 指定アバターのサイズを得る vector llGetAgentSize(key id) llPointAt 関数 現在動作せず llPointAt(vector pos) llRequestAgentData 関数 アバターデータの取得を要求する key llRequestAgentData(key id, integer data) llStopPointAt 関数 現在動作せず llStopPointAt() グループ 関数・イベント名 区分 概要 定義 llDetectedGroup 関数...
  • experiment/eventque
    イベントの同時発生限度数を調べました。 キューは64個までのイベントを溜め込むことが可能で、それ以上のイベントは無視されることの検証です。 以下のようにしてstate_entryイベントから100回のリンクメッセージを送信し、実際に処理されたリンクメッセージイベントの数をカウントしてみました。 // イベントキューリミット測定LSL integer event_call=0; // リンクメッセージのコール数 integer counter=0; // 実際に処理されたリンクメッセージ数 default { state_entry(){ integer i; integer j; llOwnerSay("Sleep start, please wait."); for (i = 0;i 10;i++){ // 1...
  • 実験・研究/イベントキュー
    イベントの同時発生限度数を調べました。 キューは64個までのイベントを溜め込むことが可能で、それ以上のイベントは無視されることの検証です。 以下のようにしてstate_entryイベントから100回のリンクメッセージを送信し、実際に処理されたリンクメッセージイベントの数をカウントしてみました。 // イベントキューリミット測定LSL integer event_call=0; // リンクメッセージのコール数 integer counter=0; // 実際に処理されたリンクメッセージ数 default { state_entry(){ integer i; integer j; llOwnerSay("Sleep start, please wait."); for (i = 0;i 10;i++){ // 1...
  • ポーズボール
    はじめに 座ったときのイベントchangedイベント llAvatarOnSitTarget関数 ポーズボールスクリプト ボールの透明化llSetAlpha関数 今回のポイント はじめに 引き続いてアニメーションのスクリプトです。 前回は単にタッチするとアニメーションするだけのスクリプトでしたが、これではいまひとつ実用性がありません。 アニメーションが最もよく利用されているのはポーズボールでしょう。 SLで遊んだ人なら誰もが一度は見たことがあると思います。 しばしば木陰とかベッドの上に置いてある、赤と青のボール。 あれですw クラブのフロアや、バーのストゥールなんかにも置いてあるところがあります。 これらのボールは、アバターが座ったときに特定のアニメーションを実行するものです。 座ったときのイベント スクリプトの構成はすぐに予想がつくかと思いま...
  • prim間通信
    はじめに 色を変える 簡易版カラーチェンジャー 拡張性の問題 prim間通信の仕組みllMessageLinked関数 link_messageイベント カラーチェンジャースクリプト ロングタッチ 今回のポイント はじめに しばしばカツラなどに組み込まれている色変更のスクリプトを作ってみましょう。 単純に色を変えるだけのスクリプトであれば、ここまで読んできた方には簡単に出来ると思います。 ですが、今回は特にprim間の通信を行う方法使って、拡張性の高いスクリプトを考えてみたいと思います。 prim間通信とは、llMessageLinked()という関数を使い、リンクされているprim同士でメッセージをやり取りする方法です。 これを使うと、一つのprimを操作したときに、別のprimを操作することができるようになります。 色を変える primの色を変えるのは...
  • ベンダーを作ろう
    はじめに ベンダーの仕組みllSetTexture関数 タッチされたのは誰?llDetectedLinkNumber関数 画像切り替えスクリプト 今回のポイント はじめに SLでアイテムを販売するには、必ずしもスクリプトが必要になるわけではありません。 販売用のオブジェクト(ポスター、看板、箱など)を用意し、そのオブジェクトのコンテンツの中に売りたいアイテムを詰め、値段とコンテンツを販売する設定にすれば、ひとまず売ることは可能になります。 ですが、この方法はアイテム一つ(あるいは1セット)につき一つのオブジェクトが必要となり、商品が増えるに従ってprim数が増加していくという問題点があります。 また、販売用オブジェクトを並べるにはどうしてもスペースが必要になりますので、限られた店舗スペースでは、自ずと販売できるアイテムの数が限られてしまいます。 スクリプトを使ったベ...
  • llBreakAllLinks
    llBreakAllLinks llBreakAllLinks() オブジェクトのリンクを全て解除する。 この関数を実行するにはPERMISSION_CHANGE_LINKSパーミッションを取得していなければならない。 バラバラ関数の例。 オブジェクトを物理にしてたりすると崩壊が楽しめる。 default { touch_start(integer num_detected) { if (llDetectedKey(0) == llGetOwner()){ llRequestPermissions(llDetectedKey(0), PERMISSION_CHANGE_LINKS); } } run_time_permissions(integer perm) { if (perm PERMI...
  • llCSV2List
    llCSV2List list llCSV2List(string src) CSV形式の文字列をリスト型に変換する。 CSVとはComma Separated Valuesの略で、Excel好きな方にはお馴染みのアレである。 つまりカンマ区切りの文字列をリストに変換する関数である。 ただし変換された要素は全て文字列型になることに注意。 "a","b","c","d" → ["a","b","c","d"] 1,2,4,8 → ["1","2","4","8"] 1,2,3 , 4,5,6 , 7,8,9 → [&qu...
  • 属性系
    属性系 面 関数・イベント名 区分 概要 定義 llGetNumberOfSides 関数 primの面数を得る integer llGetNumberOfSides() テクスチャ 関数・イベント名 区分 概要 定義 llGetTexture 関数 指定面のテクスチャーを得る string llGetTexture(integer side) llGetTextureOffset 関数 テクスチャーのオフセット値を得る vector llGetTextureOffset(integer side) llGetTextureRot 関数 テクスチャーの回転角度を得る float llGetTextureRot(integer side) llGetTextureScale 関数 テクスチャーのサイズを得る vector llGetTextureScale(integer side...
  • llGetMass
    llGetMass float llGetMass() オブジェクトの質量を得る。 リンクされたオブジェクトのルートで実行した場合はオブジェクト全体の質量を返す。 子primで実行した場合、そのprimの重さを返す。 また、アタッチメントで実行した場合はアバターの体重を得ることができる。 他のオブジェクトの質量を調べるにはllGetObjectMass関数を使う。 なお、これらMass系関数で返される質量の単位はLindogram(リンドグラム:Lg)と慣例的に呼ばれることがあるらしいが、あまり耳にしない。 名前 コメ...
  • llSetLinkColor
    llSetLinkColor llSetLinkColor(integer linknumber, vector color, integer face) 引数linknumberのリンクprimに関して、引数faceで指定した面の色を引数colorで指定した色にする。 引数colorについてはllSetColor関数を参照。 引数faceについてはllGetColor関数を参照。 名前 コメント
  • llSetAlpha
    llSetAlpha llSetAlpha(float alpha, integer face) 引数faceで指定した面の透明度をalphaにする。 alphaは0.0~1.0の範囲で指定し、0.0は完全透明、1.0は完全不透明である。 この関数で変更できる透明度はスクリプトの稼動しているprimの透明度だけである。 リンクprimの透明度を変更するにはllSetLinkAlpha関数を使って欲しいみたいだ。 引数faceに指定可能な値についてはllGetColor関数の説明を参照。 名前 コメント
  • llSetLinkAlpha
    llSetLinkAlpha llSetLinkAlpha(integer linknumber, float alpha, integer face) 引数linknumberのリンクprimに関して、引数faceで指定した面の透明度をalphaにする。 alphaは0.0~1.0の範囲で指定し、0.0は完全透明、1.0は完全不透明である。 スクリプトの稼動しているprimの透明度を変更する際にはllSetAlpha関数を使っても良い。 引数faceに指定可能な値についてはllSetColor関数の説明を参照。 名前 コ...
  • llRotateTexture
    llRotateTexture llRotateTexture(float angle, integer side) 引数sideで指定した面のテクスチャの回転をangleにする。 引数angleの単位はラジアンなので注意すること。 弧度法で指定したい場合は、 llRotateTexture(90 * DEG_TO_RAD, ALL_SIDES); のようにDEG_TO_RAD定数を使えばよい。 面の指定方法はllGetColor関数の説明を参照。 primの形状によって面番号は異なる。 なお、リンクされたオブジェクトにおいて、スクリプトが入っているprim以外のprimのテクスチャを回転させるには、llSetLinkPrimitiveParams?関数を使う。 ...
  • llGetPos
    llGetPos vector llGetPos() primの現在位置を返す。 戻り値はSIM上の座標を示すvector値である。 この関数がリンクオブジェクトの子primで使用された場合、戻り値はその子primのワールド座標である。 ルートの位置ではないので注意。 ルートprimに対する子primの相対座標を取得したい場合はllGetLocalPos関数を使用する。 子prim内のLSLからルートprimの座標を取得したい場合はllGetRootPosition関数を使用する。 なお、アタッチメントにおいてこの関数が使用された場合は、primの位置ではなく、アバターの位置を返す。 default { touch_start(integer detected) { llSay(0, "Positin " + (...
  • llGetLocalPos
    llGetLocalPos vector llGetLocalPos() 子primに関してルートprimからの相対位置を得る。 つまり戻り値はルートprimの中心座標からのズレを示すvector値である。 例えばルートprimのZ軸方向に1m離れた位置でリンクされた子primでは、llGetLocalPos関数は常に 0., 0.0, 1.0 を返す。 オブジェクト全体がどこに移動しようともこの戻り値は変わらない。 であるが、この関数がルートprimや単一primにおいて使用された場合、例外的にワールド座標におけるオブジェクトの位置を返す。 アタッチメントにおいても使用することができるが、アタッチメントのルートprim内でこの関数を使った場合、戻り値はアタッチメントポイントからの相対座標である。 この辺り動作が複雑なので注意すること。 ll...
  • llGetLocalRot
    llGetLocalRot rotation llGetLocalRot() 子primに関してルートprimからの相対的な回転値を得る。 つまり戻り値はルートprimに対してどのくらい回転しているかを示すrotation値である。 例えばルートprimが回転ゼロのとき、90度回転してリンクされた子primでは、llGetLocalPos関数は常に90度の回転値を返す。 オブジェクト全体がどう回転しようともこの戻り値は変わらない。 であるが、この関数がルートprimや単一primにおいて使用された場合、例外的にワールド座標におけるオブジェクトの回転値を返す。 アタッチメントにおいても使用することができるが、アタッチメントのルートprim内でこの関数を使った場合、戻り値はアタッチメントポイントに対する相対的な回転値である。 この辺り動作が複雑なので注意...
  • llRegionSay
    llRegionSay llRegionSay(integer channel, string text) 土地全域に聞こえるチャットメッセージtextをチャンネルchannelで送信する。 LSLではチャットメッセージをlisten?して処理を行うことが多く、不用意にllRegionSayを多用すると負荷が高くなる可能性がある。 チャットメッセージの送信範囲は必要に応じて使い分けるべき。 他のチャット関連関数も参照のこと。 llWhisper・・・範囲10m llSay・・・範囲20m llShout・・・範囲100m llOwnerSay・・・オーナーにのみ送信 llInstantMessage・・・特定アバターのみ(IM) llMessageLinked・・・リンクprim間の通信。listenに影響なし。 チャンネル0(パブリ...
  • llGetFreeMemory
    llGetFreeMemory integer llGetFreeMemory() スクリプトが使用可能な残りメモリ容量(単位byte)を返す。 各スクリプトが利用可能なメモリ容量は一律16Kbyteである。 このメモリ容量の中にはスクリプトのバイトコード、スタックメモリ、ヒープメモリが含まれる。 極々簡単に言ってしまうなら、スクリプトのバイトコードとはスクリプト本体のことであり、スタックメモリは関数の呼び出し時に使われる領域、ヒープは変数の格納領域である。 すなわち、以下のような事柄がメモリを消費する要因になる。 巨大なスクリプト  1スクリプト内に全ての処理を書くには限界がある。  スクリプトで実装する機能が膨大な場合はモジュール化(複数のスクリプトに分けてリンクメッセージ等でやり取りする方法)を考慮する。 関数のネスト  大量のユーザー...
  • llGetAlpha
    llGetAlpha float llGetAlpha(integer face) 指定面の透明度を得る。 戻り値は基本的には0.0~1.0である。 0.0だと完全透明、1.0は完全不透明。 引数faceに指定可能な値はllGetColorを参照。 ただし、引数faceにALL_SIDESを指定した場合、戻り値はprimの全ての面の透明度を合計した値になる。 例えば初期状態のキューブで全ての面が完全不透明だった場合には6.0が返って来る。 意味があるかどうかはともかく、返って来た値を面数で割ってやると、primの平均透明度を得ることができる。 float alpha = llGetAlpha(ALL_SIDES) / ((float)llGetNumberOfSides()); なお、この関数によって得られる透明度はbuildツールのテクスチ...
  • llPassCollisions
    llPassCollisions llPassCollisions(integer pass) 子primで発生した衝突イベントをルートprimにも通知するかどうかを設定する。 引数passにTRUEを指定した場合はルートprimにも通知され、FALSEは通知されない。 通常、リンクオブジェクトにおける衝突イベント(collision_start?、collision?、collision_end?)はprimごとに発生する。 しかしながら子prim内に衝突イベントを処理するスクリプトが存在しない場合、代わりにルートprimで衝突イベントが処理される。 ルートprimにも衝突イベントを処理するスクリプトがなければ、そのオブジェクトは衝突に関しては何も処理を行わない。 従って、もしも子primでのみ衝突イベントを処理し、ルートprimではタッチイベントを処理し...
  • @wiki全体から「基礎知識/リンク」で調べる

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

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