BlackSheep-LSL@Wiki内検索 / 「no_sensor」で検索した結果

検索 :
  • センサーを使おう
    ...ったときのイベント no_sensor 何も見つからなかったときのイベント sensor.jpg センサー関数 まずは探知を実行する関数から具体的に見てみましょう。 llSensor(string name, key id, integer type, float range, float arc) この関数は指定した条件での探知を一度だけ実行します。 探知条件を指定する引数について順番に説明します。 string name 探知対象の名前です。 例えば「Miz」というアバターやオブジェクトを探したいときは、ここに"Miz"を指定します。 大抵の場合、探知対象の名前が分かっていることは少なく、名前を指定することはあまりありません。 空文字""を指定すると、どんな名前のアバターやオブジェクトであろうと探知...
  • リファレンス(イベント)
    ...g_start() no_sensor? センサーが何も探知しなかったとき(参考) no_sensor() not_at_rot_target? オブジェクトの回転が目標値に達していないとき not_at_rot_target() not_at_target? オブジェクトが到達目標地点に達していないとき not_at_target() object_rez!? 他のオブジェクトをrez!し終えたとき(参考)? object_rez!(key id) on_rez!? オブジェクトがrez!されたとき(参考)? on_rez!(integer start_param) remote_data? XML-RPC通信が発生したとき remote_data(integer event_type, key channel, key message_id, string sende...
  • イベント系
    ... 区分 概要 定義 no_sensor イベント センサーが何も探知しなかったとき[参考]初級lsl-20 no_sensor() sensor イベント センサーが探知したとき[参考]初級lsl-20 sensor(integer num_detected) llSensor 関数 センサーを起動する[参考]初級lsl-20 llSensor(string name, key id, integer type, float range, float arc) llSensorRemove 関数 センサーを停止する[参考]初級lsl-20 llSensorRemove() llSensorRepeat 関数 永続的なセンサーを起動する[参考]初級lsl-20 llSensorRepeat(string name, key id, integer type, float ...
  • 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 アバ...
  • llSensorRepeat
    llSensorRepeat llSensorRepeat(string name, key id, integer type, float range, float arc, float rate) 一定間隔で繰り返し探知を実行するセンサーを起動する。 探知を行う間隔(秒数)を引数rateで指定する他はllSensor関数と同様である。 引数の詳細はllSensor関数を参照。 センサーを停止するにはllSensorRemove関数を使用する。 名前 コメント
  • llSensorRemove
    llSensorRemove llSensorRemove() 稼動中のセンサーを停止する。 llSensorRepeat関数で継続作動しているセンサーを止めるときに使う。 名前 コメント
  • モジュール化
    ... } no_sensor(){ state default; } } state wait_level3 { state_entry(){ llSensorRepeat("", "", AGENT, 5, PI, 0.25); } sensor(integer detected){ state activate; } no_sensor(){ state wait_level2; } } state activate { state_entry(){ llMessageLinked(LINK_SET,TRUE,"action",llDetectedKey(0)); llSensorRepeat("&...
  • llDetectedKey
    llDetectedKey key llDetectedKey(integer number) 検知されたアバター/オブジェクトのUUIDを取得する。 llDetectedKeyはデテクト系と呼ばれる関数の一つである。 デテクト系関数は以下のイベント内でしか効果がない。 [[touch]]/[[touch_start]]/[[touch_end]]・・・タッチ系イベント [[collision]]/[[collision_start]]/[[collision_end]]・・・衝突系イベント [[sensor]]・・・センサーイベント というのも、デテクト系関数とは「そのイベントを起こしたアバター/オブジェクトの情報を得る」ための関数だからである。 タッチ系イベント内で使用すれば「タッチしたアバターの情報を得る」関数となり、 衝突系イベントであれば「衝...
  • llGetBoundingBox
    llGetBoundingBox list llGetBoundingBox(key object) 指定したUUIDのオブジェクト(またはアバター)の当たり判定領域を取得する。 当たり判定の領域のことをバウンディングボックスと言う。 通常バウンディングボックスはオブジェクトをすっぽり覆う立方体で示される。 この関数の戻り値は、vector型変数を二つ含むリストである。 二つのvectorは、バウンディングボックスの最小コーナー座標及び最大コーナー座標を示す。 以下の例はLSL-Wikiからそのまま持ってきたスクリプトであるが、バウンディングボックスを視覚化する。 半透明のキューブに以下のスクリプトを仕込み、チャンネル3で対象のオブジェクト名を指定する。 例えば「/3 Miz Cremorne」と発言すれば、私のアバターのバウンディングボックスを見ること...
  • llCollisionSound
    llCollisionSound llCollisionSound(string impact_sound, float impact_volume) 衝突時の音を設定する。 引数impact_soundにはサウンド名またはUUIDを指定する。 サウンド名で指定する場合、オブジェクトのコンテンツ内にサウンドが入っていなければならない。 impact_volumeは音量である。0.0~1.0の間で指定する。 音量に0.0を指定した場合、何故か衝突時のパーティクルがデフォルトに戻るというバグがあるらしいが未確認。 衝突時のパーティクルを設定するにはllCollisionSpriteを使う。
  • スクリプト小技
    LSLの常套手段やちょっと気の利いた使い方、特殊な関数など、tipsのような記事です。 基本的にLSLの基礎がわかっている方向けの内容になっています。 回転について(記述中) はじめに rotation型 vector型 vectorとrotation間の変換 回転の向きについて rotationの合成 回転の合成順序 グローバル座標系とローカル座標系 リンクプリムの回転 テレポート テレポートハック 移動型テレポーター LSLで日本語を使う はじめに listenによる入力 URLエスケープの使用 その他の方法 パーティクル パーティクルとは パーティクル関数(llParticleSystem関数) パーティクルモジュールパラメータの説明マスク・パラメータ パターン・パラメータ その他詳細パラメータ 応用編 鍵をかける はじめに 鍵をかけることの意味操作...
  • llListSort
    llListSort list llListSort(list src, integer stride, integer ascending) リストsrcを並び替える。 引数ascendingがTRUEだった場合は降順、FALSEだった場合は昇順に並ぶ。 strideは「リストのグルーピング」を指定する引数である。 llList2ListStrided関数の説明を見ていただくと、ストライドのイメージが多少なりともわかるかと思う。 リスト型というのは通常、一列にデータが並んでいる構造であるが、ストライドを使うことで行列的に扱うことができる。 通常のリスト  [1,2,3,4,5,6,7,8,9....] ストライド(3つずつの場合)  [1,2,3,   4,5,6,   7,8,9   ....] 上記のように、ストライドに3を指定した場...
  • リファレンス(名前順)
    A llAbs integer型の絶対値を得る integer llAbs(integer val) llAcos アークコサインを得る float llAcos(float val) llAddToLandBanList 土地からアバターをBANする llAddToLandBanList(key agent, float hours) llAddToLandPassList 土地の通行許可をアバターに与える llAddToLandPassList(key agent, float hours) llAdjustSoundVolume サウンドのボリュームを調整する llAdjustSoundVolume(float volume) llAllowInventoryDrop インベントリへのドロップを許可(あるいは非許可に)する llAllowInventoryDrop(inte...
  • リファレンス(機能別)
    関数 関数アバター/オブジェクト系アバター グループ オブジェクト UUID リンク イベント系タッチ アタッチ シット 衝突 センサー デテクト インターフェース系UI チャット 取引 制御系パーミッション コントロール カメラ REZ コンテンツ スクリプト 属性系面 テクスチャ 色 透明度 特殊効果系アニメーション 音 ビデオ パーティクル ビークル データ系数学 文字列 リスト 時間 データ 暗号化 土地系BAN 土地 天候 地面 物理3D系位置 回転 物理 外部機能系Email HTTP XML-RPC アバター/オブジェクト系 アバター llGetAgentInfo 指定アバターの状態を得る(飛行・AWAYなどの動作及びアタッチメントの有無等) integer llGetAgentInfo(key id) llGetAgentSize 指定アバターのサイズを得る v...
  • パーティクル
    パーティクルとは パーティクル関数(llParticleSystem関数) パーティクルモジュールパラメータの説明マスク・パラメータ パターン・パラメータ その他詳細パラメータ 応用編 パーティクルとは 小技というわけではありませんが、パーティクルシステムについては設定すべきパラメータが非常に多く、わかりにくいという声をしばしば聞きます。 ですので今回はパーティクルシステムの解説とサンプル・スクリプトを書いておくことにします。 パーティクルとは粒子のことです。 SLのパーティクルシステムは、煙や火、水しぶきなどの粒子を表現するための仕組みのことを言います。 スクリプトを使う以外にパーティクルを制御する方法はありません。 従って、粒子を使った表現をしようと思ったら、パーティクルシステムのスクリプトを使わなければなりません。 よく見かけるパーティクルを列...
  • 照明を作ろう
    はじめに build ライト効果の設定 初めての照明スクリプト 同じ処理をまとめよう 今回のポイント はじめに 椅子、ドアと作ってきたことで、だいぶスクリプトの構成については理解できてきたと思います。 今回はさらに練習として、照明を作ってみましょう。 ただの照明では面白くありませんので、カラフルに色が変わるものにしたいと思います。 build お好みで照明器具を作りましょう。 ランプ型、蛍光灯型、電球型、なんでも構いません。 私はこんなのを作りました。 Snapshot_107.jpg 手抜きなスタンドライトですw ライト効果の設定 今回のスクリプトは、タッチするたびに照明の色が変わるものにしましょう。 最初は明かりがついていなくて、タッチすると赤く光り、次にタッチすると緑、さらにタッチすると青、もう一度タッチすると照明が消える(...
  • prim間通信
    はじめに 色を変える 簡易版カラーチェンジャー 拡張性の問題 prim間通信の仕組みllMessageLinked関数 link_messageイベント カラーチェンジャースクリプト ロングタッチ 今回のポイント はじめに しばしばカツラなどに組み込まれている色変更のスクリプトを作ってみましょう。 単純に色を変えるだけのスクリプトであれば、ここまで読んできた方には簡単に出来ると思います。 ですが、今回は特にprim間の通信を行う方法使って、拡張性の高いスクリプトを考えてみたいと思います。 prim間通信とは、llMessageLinked()という関数を使い、リンクされているprim同士でメッセージをやり取りする方法です。 これを使うと、一つのprimを操作したときに、別のprimを操作することができるようになります。 色を変える primの色を変えるのは...
  • llGetInventoryType
    llGetInventoryType integer llGetInventoryType(string name) コンテンツ内にある指定した名前のアイテムのタイプを返す。 一般的に、引数nameで指定したアイテムがコンテンツ内に存在するかどうかをチェックするのに利用される。 戻り値は以下のいずれかとなる。 定数 値 説明 INVENTORY_NONE -1 アイテムは存在しない INVENTORY_ANIMATION 20 アニメーション INVENTORY_BODYPART 13 ボディパーツ INVENTORY_CLOTHING 5 服 INVENTORY_GESTURE 21 ジェスチャー INVENTORY_LANDMARK 3 ランドマーク INVENTORY_NOTECARD 7 ノートカード INVENTORY_OB...
  • llGetInventoryName
    llGetInventoryName string llGetInventoryName(integer type, integer number) コンテンツ内にある指定したtypeのnumber番目のアイテムの名前を返す。 numberはゼロから始まるアイテムの番号である。 指定したアイテムが存在しない場合は空文字""が返る。 アイテムのタイプには以下の値を使用する。 定数 値 説明 INVENTORY_ALL -1 全種類 INVENTORY_ANIMATION 20 アニメーション INVENTORY_BODYPART 13 ボディパーツ INVENTORY_CLOTHING 5 服 INVENTORY_GESTURE 21 ジェスチャー INVENTORY_LANDMARK 3 ランドマーク INVENTO...
  • llGetInventoryNumber
    llGetInventoryNumber integer llGetInventoryNumber(integer type) 指定したtypeのアイテムがコンテンツ内にいくつあるかを返す。 アイテムのタイプには以下の値を使用する。 定数 値 説明 INVENTORY_ALL -1 全種類 INVENTORY_ANIMATION 20 アニメーション INVENTORY_BODYPART 13 ボディパーツ INVENTORY_CLOTHING 5 服 INVENTORY_GESTURE 21 ジェスチャー INVENTORY_LANDMARK 3 ランドマーク INVENTORY_NOTECARD 7 ノートカード INVENTORY_OBJECT 6 オブジェクト INVENTORY_SCRIPT 10 スクリプト INVE...
  • ポーズボール
    はじめに 座ったときのイベントchangedイベント llAvatarOnSitTarget関数 ポーズボールスクリプト ボールの透明化llSetAlpha関数 今回のポイント はじめに 引き続いてアニメーションのスクリプトです。 前回は単にタッチするとアニメーションするだけのスクリプトでしたが、これではいまひとつ実用性がありません。 アニメーションが最もよく利用されているのはポーズボールでしょう。 SLで遊んだ人なら誰もが一度は見たことがあると思います。 しばしば木陰とかベッドの上に置いてある、赤と青のボール。 あれですw クラブのフロアや、バーのストゥールなんかにも置いてあるところがあります。 これらのボールは、アバターが座ったときに特定のアニメーションを実行するものです。 座ったときのイベント スクリプトの構成はすぐに予想がつくかと思いま...
  • llCollisionSprite
    llCollisionSprite llCollisionSprite(string impact_sprite) 衝突時のパーティクルを設定する。 物理オブジェクトを地面に落としたときなど、何やら火花っぽいものが飛び散ったりするが、あれが衝突時のパーティクルである。 この関数を使うと、衝突したときにハートが飛び散る矢とか、なんか変なものを作ることができる。 引数impact_spriteにはパーティクルに使用するテクスチャ名またはUUIDを指定する。 テクスチャ名で指定する場合、オブジェクトのコンテンツ内にテクスチャが入っていなければならない。 impact_spriteに""(空文字)を指定した場合はデフォルトのパーティクルに戻る。 衝突時のサウンドを設定するにはllCollisionSoundを使う。
  • ノートを使おう
    はじめに ノートカード読取の仕組みllGetNotecardLine関数 dataserverイベント 典型的なパターン ノートカード対応ベンダーllParseString2List関数 for文 今回の歩イント はじめに ベンダースクリプトの改良編です。 前回までで機能面は十分に満たすものを作りましたが、今回は使い勝手のよいものになるよう改造を施します。 改良点は商品データの管理の部分です。 前回までのスクリプトでは、商品データをリスト型変数に定義していましたが、この方法だと商品の追加や変更があったときにいちいちスクリプトを直さなければなりません。 そこで、商品データはSLのノートカードを使って管理するようにし、ノートカードを切り替えるだけで扱う商品を変えられるようなベンダーを考えます。 商品のデータに対して、そのデータを使ってアレコレ操作する仕組みを「ロ...
  • llGetPrimitiveParams
    llGetPrimitiveParams list llGetPrimitiveParams(list params) primの属性値を返す。 引数paramsには取得したい属性のリストを指定する。 戻り値は引数に指定した属性に応じたリスト型のデータとなる。 基本的に、buildツールを使って指定可能なprimの設定値は全てこの関数を使用して取得できる。 また、この関数の戻り値を使ってllSetPrimitiveParams?関数を実行すると、buildツールと同様にprimを編集することが可能である。 これはつまりbuildの自動化が実現できることを意味する。 鏡面コピースクリプトなどは、この関数を使ってコピー元のprimの属性値を取得し、必要なパラメータに鏡面変換をかけた後、llSetPrimitiveParams?関数でコピー後のprimを形成する。 ...
  • llAvatarOnSitTarget
    llAvatarOnSitTarget key llAvatarOnSitTarget() オブジェクトの上に座っているアバターのUUIDを返す。 誰も座っていない場合はNULL_KEYを返す。 ただし、この関数はllSitTarget?関数を使ってsit位置を設定しているオブジェクトでしか機能しない。 この関数はしばしば「アバターがsitしたとき」のイベントを擬似的に実装する際に使われる。 default { state_entry() { llSitTarget( 0.0, 0.0, 0.1 , ZERO_ROTATION); } changed(integer change) { // something changed if (change CHANGED_LINK) { llSleep(0.5); ...
  • ダイアログを使おう
    はじめに ダイアログllDialog関数 ダイアログ対応版照明スクリプト リストを使いこなすllListFindList関数 今回のポイント はじめに 照明スクリプトだけで三回にも及んでしまいました(^^; ですが、照明スクリプト一回目の「ユーザー関数」、二回目の「listen」、そして今回の「ダイアログ」はlslの中でも使用頻度の高いものばかりですので、ぜひとも使い方をマスターしていただきたい部分です。 この回から初めて見たという方は、第六回の「照明を作ろう」から戻ってお読みいただくのが良いかと思います。 照明のスクリプト作成について順を追って解説しております。 さすがに照明スクリプトがこれだけ続くと、いいかげん目がチカチカして来そうですw 今回は頑張って完成まで行き着きたいと思います。さて照明スクリプトですが、前回までで、チャットで色名を発言することで照明の色...
  • 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...
  • llSetColor
    llSetColor llSetColor(vector color, integer face) 引数faceで指定した面の色を引数colorで指定した色にする。 色の指定はvector型で行うが、値の範囲は 0.0, 0.0, 0.0 ~ 1.0, 1.0, 1.0 となる。 3つの要素のうち先頭からRed、Green、Blueの色要素の指定となっている。 Webページ等の色指定で一般的なRGB形式は0~255の範囲で色要素の強さを指定するが、LSLでは0.0~1.0の範囲なので注意すること。 0~255の色要素をLSL用に変換するには、255で割り算してやれば良い。 一般的なRGB形式の指定値との対比を参考までに掲載しておく。 0~255 16進数 LSL 0 0 0 64 40 0.25 128 80 0.5 192 C0 0.75 255 FF 1...
  • 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...
  • llGroundNormal
    llGroundNormal vector llGroundNormal(vector offset) offsetで指定した位置の地面の垂直方向を返す。 平らな地面であれば、垂直方向は当然真上になる。坂道なら、地面に垂直な方向は傾斜によって変わって来る。 offsetはオブジェクトからの相対距離である。 仮にoffsetがZERO_VECTORであれば、オブジェクトの存在する位置の地面に関して、垂直な方向を返す。 名前 コメント
  • 特殊効果系
    特殊効果系 アニメーション 関数・イベント名 区分 概要 定義 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 関数 サウンドのボリュー...
  • 基礎知識/フロー制御とは?
    フロー制御 フロー制御というのは、条件によって実行するコードを変えたり、繰り返し処理を行ったりするものを言います。 プログラムの処理の流れ(フロー)をコントロールするものなので、「フロー制御」と呼ばれます。 まずはフロー制御の種類を挙げておきます。 フロー制御 説明 if-else 条件分岐。条件に応じて実行するコードを変える。 whle ループ処理。条件を満たす間延々と繰り返し処理を行う。 do-while ループ処理。処理を行った後、条件を満たす場合は繰り返す。 for ループ処理。条件を変化させながら繰り返し処理を行う。 return 復帰(リターン)。ユーザー関数やイベントを終了する。 jump ジャンプ。指定したコードの行に処理を飛ばす。 state ステート。LSLのステートを変更する。 if-else フロー制御の中でも最も使用頻度が高いのがif...
  • 鍵をかける
    はじめに 鍵をかけることの意味操作できる人を限定する方法 鍵をかける 強制排除スクリプト はじめに やもさんより質問いただいたスクリプトについて解説です。 [やもさんからの質問] 最近自分で服を作るようになり試着の為の更衣室を用意したのですが ドアに鍵をかけるか、自分にしか開けられないドアするにはどのようにしたら良いのでしょうか? これって結構ニーズのある話だと思います。 着替えの最中は裸になることも多く、やはり人に見られたくない場合がありますので・・・。 また、Kirさんからも関連のある質問をいただきました。 [Kirさんからの質問] なんとか、オーナー限定にて動作するように改良したいのですが、 if (llDetectedKey(0) == llGetOwner()){ handle=llListen(channel, "&qu...
  • お金を扱う
    はじめに buyとpaymoneyイベント 金返せ!llSetPayPrice関数 llGiveMoney関数 パーミッションllRequestPermissions関数 run_time_permissionsイベント アイテムの存在確認llGetInventoryType関数 ベンダースクリプト 今回のポイント はじめに ベンダー作成の続きです。 簡単なようでいて、意外に面倒なのがベンダーです(^^; やはりお金を扱うスクリプトですから、間違いのないような仕組みにしておかなければいけません・・・。 前回はタッチして商品の画像を切り替えるスクリプトを作りました。 今回はお金を受け取って商品を渡す部分に取り組みます。 そこまで出来ればベンダーとしては最低限のものにはなるでしょう。 buyとpay buildツールをいじっていて、オブジェクトをクリックした...
  • 衝突判定
    はじめに 衝突イベント 衝突版自動ドア 今回のポイント 最後に はじめに 初級スクリプトとして触れておきたい事項も最後となりました。 最後に扱うのはオブジェクトの衝突についてです。 物理オブジェクトを扱いだすと、いろいろな場面で衝突判定をしたりするのですが、通常のオブジェクトにおける衝突判定も実は結構有用です。 例えば以前、センサーを利用した自動ドアを作りました。 あのスクリプトは衝突を用いて書き直すことが可能です。 衝突・・・なんていうと猛スピードで激突するイメージかもしれませんが、lslで言う衝突はもっと軽いものも含みます。 例えばアバターが歩いてきてオブジェクトを踏んだとき、それだけで衝突のイベントが起きるのです。 自動ドアの前にマットを用意しておいて、それを踏んだらドアが開く、という古典的な仕掛けが実現できます。 実際に衝突を使った自動ド...
  • エラー対応
    エラーが出る原因と対処方法についてまとめてみました。 LSLに関わって発生するエラーには主に3種類あります。 コンパイルエラー(Compiler Errors) ランタイムエラー(Run-Time Errors) ビルドエラー(Build Errors) 以下にエラーの種類と原因、対処方法について書いていますので参考にしてみて下さい。 コンパイルエラーSyntax Error Type mismatch Function call mismatches type or number of arguments Name not defined within scope Name previously declared within scope Use of vector or quaternion method on incorrect type Lists can...
  • データ系
    データ系 数学 関数・イベント名 区分 概要 定義 llAbs 関数 integer型の絶対値を得る integer llAbs(integer val) llAcos 関数 アークコサインを得る float llAcos(float val) llAsin 関数 アークサインを得る float llAsin(float val) llAtan2 関数 アークタンジェントを得る float llAtan2(float y, float x) llCeil 関数 少数以下を切り上げる integer llCeil(float val) llCos 関数 コサインを得る float llCos(float theta) llFabs 関数 float型の絶対値を得る float llFabs(float num) llFloor 関数 小数部を切り捨てる integer llFloor(f...
  • 実験・研究/イベントキュー
    イベントの同時発生限度数を調べました。 キューは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...
  • ドアを作ろう
    build ドアスクリプトの構成 回転の処理 開けっ放しは嫌よ 今回のまとめ build 基本的なものにも関わらず、スクリプト初心者にとっては少々難しいのがドアのスクリプトです。 真横にスライドするドアならばまだ楽ですが、回転の要素が入ってくると途端に難しいと思う人が多いようですね。 前回の椅子を作る際に、回転角度の指定方法について便利な書き方を説明しましたので、今回はそれを使ってドアのスクリプトにチャレンジしてみようと思います。 例によってまずはbuildからです。 ドアの作り方にもいろいろありますが、注意していただきたいことは一点のみです。 スクリプトによる回転は、あくまでもオブジェクトの中心座標(ルート座標)を基準に行われますので、ルートの座標をドアの蝶番の位置にあうようにしなければなりません。 私は単純に、立方体を板状にした1primのドアを用意し...
  • llRequestSimulatorData
    llRequestSimulatorData key llRequestSimulatorData(string simulator, integer data) 引数simulatorに指定した名前のSIMの情報の取得要求を出す。 SIM名は大文字・小文字を区別せずに指定可能だが、似たような名前のSIMが他にあると、間違ったSIMの情報を返してくることがあるらしい。なので正確に指定するべきである。 情報が取得できるとdataserver?イベントが発生する。 その際、llRequestSimulatorData関数の戻り値が識別キーとして通知されるので、戻り値は忘れないよう控えておくこと。 要求する情報は引数dataで指定する。 dataには以下の値を指定できる。 定数名 値 説明 DATA_SIM_POS 5 SIMのグローバル座標をvector...
  • llGetParcelPrimCount
    llGetParcelPrimCount integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide) 引数posで指定された位置の土地に存在するprimの数を得る。 土地オーナーのprim数、グループのprim数など、引数categoryを指定することで種別ごとのカウントが可能。 引数sim_wideにTRUEを指定するとSIM全体のprim数、FALSEの場合は分割管理された土地に存在するprim数を得ることができる。 引数categoryには以下の値を指定可能である。 定数名 値 説明 PARCEL_COUNT_TOTAL 0 全てのprimの数(ただしtempオブジェクトはカウントされない) PARCEL_COUNT_OWNER 1 土地オーナー所有のpri...
  • 音を鳴らそう
    はじめに サウンドを扱う関数 音の出るドア ループサウンド 今回のポイント はじめに 今回のスクリプトは簡単です。 サウンドの再生についてはもっと早くに取り上げるべきでしたが、ついつい後回しになってしまいました(^^; オブジェクトにちょっとした音を組み込むことは、簡単なわりに効果的です。 例えば照明のON/OFFをするときにスイッチ音を付けたり、アニメーションと一緒に効果音を付けたりするだけで、よりリアルで面白いものを実現することができます。 基本的にはスクリプトで実現できる音とは、効果音のことだと思ってください。 BGMのような長いサウンドを鳴らすことは容易ではありません。 というのも、SLにアップロード可能なサウンドは10秒以内に限られているためです。 今回は簡単な例として、以前作ったドアのスクリプトに、開閉の音を組み込んでみたいと思います。 ...
  • 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?関数を使う。 ...
  • llPassCollisions
    llPassCollisions llPassCollisions(integer pass) 子primで発生した衝突イベントをルートprimにも通知するかどうかを設定する。 引数passにTRUEを指定した場合はルートprimにも通知され、FALSEは通知されない。 通常、リンクオブジェクトにおける衝突イベント(collision_start?、collision?、collision_end?)はprimごとに発生する。 しかしながら子prim内に衝突イベントを処理するスクリプトが存在しない場合、代わりにルートprimで衝突イベントが処理される。 ルートprimにも衝突イベントを処理するスクリプトがなければ、そのオブジェクトは衝突に関しては何も処理を行わない。 従って、もしも子primでのみ衝突イベントを処理し、ルートprimではタッチイベントを処理し...
  • llVecNorm
    llVecNorm vector llVecNorm(vector v) 引数に指定したvector値vの単位ベクトルを得る。 単位ベクトルとは長さが1となるようなvector値のことで、指し示す方向は元のベクトルと同じもののことを言う。 例えば 2,0,0 はX方向に2mの大きさを持つベクトルであるが、このベクトルの単位ベクトルは、 1,0,0 である。 方向は同じX方向で、大きさが1mとなっている。 単位ベクトルがどのような場合に使えるかと言うと、例えばある二つのオブジェクトA,Bがあり、オブジェクトAをオブジェクトBに向けて15cmずつ動かしたい、などという状況を考えてみる。 オブジェクトAの座標をv1、Bの座標をv2とすると、AからBへ向かうベクトルは、v2 - v1である。 その単位ベクトルをv0とすると、 vector v0 = ll...
  • llGetAgentInfo
    llGetAgentInfo integer llGetAgentInfo(key id) エージェントの情報を入手する。 腕利きのエージェントを調査する場合は報復を覚悟したりしなくても良い。 ここで言うエージェントというのは要するにアバターのことである。 この関数で調べることができるのは、主にアバターの動作である。 戻り値はビットフィールドになっているので以下の定数と 演算を行って判定する。 定数 説明 実際の値 AGENT_FLYING 飛行中もしくは落下中 1 AGENT_ATTACHMENTS アタッチメントを装備している 2 AGENT_SCRIPTED スクリプト入りのアタッチメントを装備している 4 AGENT_MOUSELOOK マウスルック状態 8 AGENT_SITTING 地面もしくはオブジェクトの上に座っている 1...
  • llGetInventoryPermMask
    llGetInventoryPermMask integer llGetInventoryPermMask(string item, integer mask) コンテンツ内にある指定したアイテム名の権限を調べる。 引数maskには調べたい権限の対象者を指定する。 定数 値 説明 MASK_BASE 0 基本(現在のオーナーの権限に等しい) MASK_OWNER 1 現在のオーナーの権限 MASK_GROUP 2 グループの権限 MASK_EVERYONE 3 その他の人々の権限 MASK_NEXT 4 次のオーナーの権限 戻り値はビットフィールドになっているので、以下の定数と&演算を行って権限をチェックする。 定数 値(16進数) 値(整数値) 説明 PERM_ALL 0x7FFFFFFF 2147483647 Move/Mod...
  • llGetParcelFlags
    llGetParcelFlags integer llGetParcelFlags(vector pos) posで示される位置の土地の設定内容を得る。 設定内容とは「飛行可」「プッシュ可」等の土地ごとに設定されているルールのことを指す。 戻り値は以下の値を含むビットフィールドである。 定数名 値(16進数) 値(10進数) 説明 PARCEL_FLAG_ALLOW_FLY 0x1 1 飛行許可 PARCEL_FLAG_ALLOW_SCRIPTS 0x2 2 スクリプト許可 PARCEL_FLAG_ALLOW_LANDMARK 0x8 8 ランドマーク作成許可 PARCEL_FLAG_ALLOW_TERRAFORM 0x10 16 土地編集許可 PARCEL_FLAG_ALLOW_DAMAGE 0x20 32 ダメージ有効 PARC...
  • llGetAnimation
    llGetAnimation string llGetAnimation(key id) アバターが現在実行中のアニメーション状態名を返す。 アニメーション状態名とは、歩く、座る、飛ぶなどのアバターの基本動作を指す。 セカンドライフではアニメーション状態に応じて基本アニメーションが自動的に実行される。 例えば状態が「Walking」であれば「walk」アニメーションが実行される。 この関数の戻り値は以下のいずれかである。 戻り値 説明 基本アニメーション Crouching しゃがむ crouch Hovering 浮遊 hover Hovering Down 下降 hover_down Hovering Up 上昇 hover_up Jumping ジャンプ jump PreJumping ジャンプ前の動作 prejump Running 走る run S...
  • 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_...
  • @wiki全体から「no_sensor」で調べる

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

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