お知らせ

2020年5月から、セカンドライフの情報は仮想生活ガイドというサイトにまとめていくように変更しました。
天使になりたくてのこれまでの情報は今後も過去ログとして残しておきますけれど、新しい情報は仮想生活ガイドをご覧ください^^
ラベル Linden Script Language の投稿を表示しています。 すべての投稿を表示
ラベル Linden Script Language の投稿を表示しています。 すべての投稿を表示

2017年9月23日土曜日

LSL の llHTTPRequest の仕様が再度変更されました

2017 年 8 月 29 日にメイングリッド全体に適用されたサーバーソフトウェアのアップデートにて、llHTTPRequest の仕様変更が再度行なわれました。

MIME Type changes for HTTP with LSL - LSL Scripting - SecondLife Community

Release Notes/Second Life Server/17 - Second Life Wiki

LlHTTPRequest - Second Life Wiki

今回の変更点は、下記の通りです。
  • HTTP_MIMETYPE パラメータが適切な内容になっているか、チェックが行なわれるようになりました。
  • HTTP_ACCEPT オプションが追加されました。これを使用すると、スクリプトが期待する MIME タイプをさらに制限することが出来ます。
  • スクリプトへの HTTP リクエストで、Content-Type が正しいものかどうか、許可されているものかどうかがチェックされるようになりました。

許可されている MIME タイプの形式は、下記の通りです。

"type/subtype; parameters"

正しい使用例
  • "text/plain;charset-utf8"
  • "application/x-www-form-urlencoded"
  • "multipart/mixed; boundary=\"---1234567890---\""

間違った使用例
  • "text/application/xml" (MIME タイプ に「/xml」が余計についています)
  • "text/xml charset=utf8" (MIME タイプの最後にセミコロンがありません)
  • "text / xml" (MIME タイプの区切りの前後にスペースが入っています)
  • "text/xml\n" (HTTP_MIMETYPE に改行コードが混入しています)
※これらの場合は、デバッグチャンネルでエラーが発生して、llHTTPRequest から Null キーが返されます。

セミコロンとパラメータは省略可能です。LSL は、オプションのパラメータセクションの内容は検証しません。

インターネットでの通常の仕様通りに llHTTPRequest の動作も変更されました。
LSL や Web で MIME タイプを意図した通信を行われている場合は、この辺を再度確認してみてください。
このエントリーをはてなブックマークに追加

2017年9月21日木曜日

LSL に新機能「llGetObjectDetails(OBJECT_CREATION_TIME/OBJECT_SELECT_COUNT/OBJECT_SIT_COUNT)」が追加されました

2017 年 8 月 22 日、LSL(Linden Script Language)に下記の新機能が追加されました

  • llGetObjectDetails に「OBJECT_CREATION_TIME」「OBJECT_SELECT_COUNT」「OBJECT_SIT_COUNT」パラメータが追加

Release Notes/Second Life Server/17 - Second Life Wiki

llGetObjectDetails は、オブジェクト(プリム)の情報を取得したり設定を行う関数です。

LlGetObjectDetails - Second Life Wiki

今回は、下記のパラメータが追加されました。

OBJECT_CREATION_TIMEオブジェクトの作成日時
OBJECT_SELECT_COUNオブジェクトがアバターに選択されている人数
OBJECT_SIT_COUNTオブジェクトに座っているアバターの数


llGetObjectDetails(OBJECT_CREATION_TIME)


OBJECT_CREATION_TIME を指定すると、オブジェクトの作成日が取得出来ます

ここで言う“オブジェクトの作成日”は、Rez された日時では無くて、アセットとしてオブジェクトを作成した日時になります。

そのため、作成したオブジェクトを複数 Rez しても、OBJECT_CREATION_TIME の値は全て同じになります。

通常はオブジェクトの作成日は特に気にする必要は無いと思うのですが、オブジェクトの作成はメッシュアップロードなどの際にも行われますので、そのオブジェクトがオリジナルであるかどうかのチェックに使えそうな感じなのかな?という気がします。

llGetObjectDetails(OBJECT_SELECT_COUNT)


OBJECT_SELECT_COUNT を指定すると、そのオブジェクトが何人のアバターから選択されているかを取得することが出来ます。

オブジェクトが選択されているか(編集状態になっているか)どうかは、これまで取得することは出来ませんでした。
この機能を使うことで、誰かがオブジェクトを選択しているかどうかを LSL で判別出来るようになります。

オブジェクトが選択状態かを知りたいというケースは普通はほとんどないと思いますが…、
乗り物を編集状態にすると動きが止まってしまうという状態を検出することがこの OBJECT_SELECT_COUNT を使えば出来ますので、そういった用途では非常に重宝される機能のように思います^^


llGetObjectDetails(OBJECT_SIT_COUNT)


OBJECT_SIT_COUNT を指定すると、オブジェクトにアバターが何人座っているかを取得することが出来ます。

これまでも、llGetNumberOfPrims の数からオブジェクト自身のプリム数を引くことでアバターが何人座っているかを求めることが出来ましたが、これからはOBJECT_SIT_COUNT だけで取得出来るようになります。


今回も、あったら便利かなという機能が追加されました。
気になる方はぜひ試してみてください^^
このエントリーをはてなブックマークに追加

2017年7月29日土曜日

LSL の llHTTPRequest の仕様が変更されました

2017 年 7 月 18 日にメイングリッド全体に適用されたサーバーソフトウェアのアップデートにて、llHTTPRequest の仕様変更が行なわれました。

Release Notes/Second Life Server/17 - Second Life Wiki

LlHTTPRequest - Second Life Wiki

Second Life Server 17.07.11.327548 のリリースノートには記載がありませんが、セカンドライフの公式フォーラムにて、Oz Linden さんがこの件について発表されています。

llHTTPRequest changes - LSL Scripting - SecondLife Community

今回の変更点は、下記の通りです。

URL の処理の変更


llHTTPRequest に渡される URL は、Second Life Server 17.07.11.327548 以前のバージョンでは、その内容はチェックされていませんでした。
そのため、本来動作してはいけないスクリプトが動作していました。

Second Life Server 17.07.11.327548 以降では URL が正しく扱われるようになりましたので、これ以降のバージョンでは、本来動作してはいけなかったスクリプトは動作しなくなります。

URL 内の制御文字

制御文字は、改行などの特殊な文字のことです。

URL が正しく処理されていないというバグ(不具合)を利用して、LSL で用意された HTTP ヘッダとして挿入出来るヘッダ以外のものを挿入するために、改行コードが使われていたスクリプトがありました。

Shoutcast 用などのスクリプトで、こういった処理を行なっていたものがあります。
特に、DJ ボード用のスクリプトは、この手法を使ったものが広く出回っています。
こういったスクリプトは、今後は動作しなくなります。

URL 内のスペース

スペース(空白文字)は、URL では使用出来ません。しかし、いくつかのスクリプトではそれらが使用されています。これらのスペースは、「%20」へと変換されました。

もし、他の LSL で返された値にスペースが含まれる場合には、下記の方法で値の置換を行なう必要があります。

string URL = "http://example.com/path?region=" + llEscapeURL(llGetRegionName())
※SIM 名にはスペースが含まれるものがありますが、そういう場合は llEscapeURL で変換する必要があります。

サーバーの仕組みによっては、「%20」ではなくて、「+」に変換しないといけない場合もあります。

ヘッダの値の変更

HTTP_USER_AGENT パラメータの追加

URL の処理の変更により、LSL のバグを利用した HTTP_USER_AGENT ヘッダの追加は出来なくなりました。
そこで、HTTP_USER_AGENT パラメータが新しく追加されました。

HTTP_USER_AGENT パラメータを使用すると、User-Agent ヘッダに任意の値を設定することが出来ます。
User-Agent ヘッダを要求するサーバーでは、このパラメータを利用してください。


Accept ヘッダの挙動を変更

複数の Accept ヘッダを、許可された全ての MIME-type を持つ一つの長い Accept ヘッダにすることで、リクエストを短くしました。

User-Agent ヘッダの値の変更

デフォルトの User-Agent ヘッダが変更になりました。

変更前Second Life LSL
変更後Second-Life-LSL

サーバー側で、 LSL の従来のデフォルトの User-Agent ヘッダ“Second Life LSL”が来ることを前提に処理を行なうような仕組みになっている場合は、サーバー側での変更が必要になります。


セカンドライフでは、ユーザーの間で広く使われているテクニックは、

“バグも仕様のうち”

という感じでそのバグが温存される傾向がありましたが、Oz さんはそれらを本来の形にするのが適切であるという風に考えていらっしゃるようで、llHTTPRequest も本来意図された挙動になるように修正が行なわれました。

通常の Web の仕組みに沿って作られたスクリプトであれば問題は出ないはずですが、もし、バグを利用した方法で処理を行なっているものがあった場合は、修正が必要になります。
DJ ボードのような商品の場合は、その商品を販売しているお店などに、修正版があるかどうかを確認された方がいいです。


もしこの仕様変更によって新しい不具合が発生してしまったという場合には、フォーラムまた JIRA の方で報告を行なってください
このエントリーをはてなブックマークに追加

2016年12月16日金曜日

LSL に新機能「llGetEnv(region_object_bonus)」「llGetObjectDetails(OBJECT_ATTACHED_SLOTS_AVAILABLE)」が追加されました

LSL(Linden Script Language)に、下記の新機能が追加されました
  • llGetEnvに「region_object_bonus」パラメータが追加
  • llGetObjectDetailsに「OBJECT_ATTACHED_SLOTS_AVAILABLE」パラメータが追加
Release Notes/Second Life Server/16 - Second Life Wiki


llGetEnv(region_object_bonus)


llGetEnv は、SIM(リージョン)の様々な情報を取得することが出来る関数です。

LlGetEnv - Second Life Wiki

今回は、SIM のオブジェクトボーナスの値を取得出来る機能(region_max_prims)が追加されました。

オブジェクトボーナスは、SIM の区画内で使えるプリム数を増やす設定です。

SIM の設定画面でのオブジェクトボーナスの値

土地情報でのオブジェクトボーナスの値(1.00 の場合は表示されません)

512sqm の土地で使えるプリム数は通常 175 ですが、オブジェクトボーナスが 2.00 に設定された SIM では 2 倍の 350 になります。
オブジェクトボーナスは 10.00 まで設定出来ますので、512sqm の土地で使えるプリム数は最大 1750 まで増やすことが出来ます。

ただし、SIM 全体でのプリム数の上限は変わりません。
SIM 内の一部の地区にプリムを集中させたい時に使う設定です。

セカンドライフでは主に、“ダブルプリム”の区画を作成するのに使われています。

そういった地域では、土地の残りプリム数の計算などを行なおうとすると、通常のプリム数の計算とは異なる計算が必要になります。

これまではオブジェクトボーナスを LSL で取得することは出来ませんでしたので、もしスクリプトで動的に計算を行いたいといった場合は、SIM 毎にオブジェクトボーナスの値をノートカードの設定ファイルなどであらかじめ個別に設定するといった必要がありました。

今回追加された「region_object_bonus」を使用すると、そういった手間が不用になります!^^/

オブジェクトボーナス 1.00 の SIM で「region_object_bonus」の値を取得した例

llGetObjectDetails(OBJECT_ATTACHED_SLOTS_AVAILABLE)


llGetObjectDetails は、オブジェクト(プリム)の情報を取得したり設定を行う関数です。

LlGetObjectDetails - Second Life Wiki

今回は、下記のパラメータが追加されました。

OBJECT_ATTACHED_SLOTS_AVAILABLEアバターの装着物の空きスロットの数を取得する機能

OBJECT_ATTACHED_SLOTS_AVAILABLE


OBJECT_ATTACHED_SLOTS_AVAILABLE を指定すると、アバターの装着物の空きスロットの数を取得出来ます。

チェック対象のものがアバターでない場合は、0 が返ります。

空きスロットを取得した例。
この場合は、29スロット空いています。

アバターへのオブジェクトの装着は、一つのアバター全体で 38 個(スロット)までという制限があります。

Limits - Second Life Wiki

この制限には、HUD や一時的な装着物(Temporary attachments)も含まれます。

※オブジェクトでは無い、レイヤーの衣類やアルファレイヤーなどは含まれません。

アバターにオブジェクトを装着することが出来る LSL はこれまでもありましたが、アバターがあといくつオブジェクトを装着可能かを取得する方法はありませんでした。

装着物の数が 38 個以上になる場合、LSL でさらに装着しようとすると、エラーが発生することなく失敗します。

“装着数の上限を超えて失敗した”ということを取得することは、LSL では出来ません。

ただし、今回の追加された OBJECT_ATTACHED_SLOTS_AVAILABLE を使うと、事前に装着物の上限を超えるかどうかを調べることが出来ます!

体験型のコンテンツで、llAttachToAvatarTemp でアイテムが確実に装着出来るかどうかを確認したい場合などに便利な機能だと思います^^


今回も、“かゆいところに手が届く”という感じの機能が追加されました。
少しずつですが、こうやって出来ることが増えていくのはいいですね^^
このエントリーをはてなブックマークに追加

2016年11月18日金曜日

LSL に新機能「llGetEnv(region_max_prims)」「llGetObjectDetails(OBJECT_GROUP_TAG/OBJECT_TEMP_ATTACHED)」が追加されました

LSL(Linden Script Language)に、下記の新機能が追加されました
  • llGetEnv に「region_max_prims」パラメータが追加
  • llGetObjectDetails に「OBJECT_GROUP_TAG」「OBJECT_TEMP_ATTACHED」パラメータが追加
Release Notes/Second Life Server/16 - Second Life Wiki


llGetEnv は、SIM(リージョン)の様々な情報を取得することが出来る関数です。

LlGetEnv - Second Life Wiki

今回は、SIM の最大プリム数を取得出来る機能(region_max_prims)が追加されました。

llGetEnv(region_max_prims)


llGetEnv のパラメータに「region_max_prims」を指定することで、その SIM の最大プリム数を取得出来ます。


ここで取得出来る値は、土地情報のオブジェクトタブで確認することが出来る最大プリム数と同じです。


SIM の最大プリム数は、従来は SIM の種類(フルリージョン、ホームステッド、オープンスペース)毎に固定の値でしたが、今後は同じ種類の SIM でも異なってくる場合がありますので、この機能が追加されたのだと思われます。

天使になりたくて: メインランドの SIM で利用可能なプリム数が増量されました

SIM の最大プリム数を基準にして土地のプリム数などを管理するようなスクリプトを作られる場合は、今後は固定値では無くて、region_max_prims で取得した値を基準に処理を行うようにしてください^^


llGetObjectDetails は、オブジェクト(プリム)の情報を取得したり設定を行う関数です。

LlGetObjectDetails - Second Life Wiki

今回は、下記のパラメータが追加されました。

OBJECT_GROUP_TAGアバターのグループタグを取得する機能
OBJECT_TEMP_ATTACHEDオブジェクトが一時装着されているどうかの状態

llGetObjectDetails(OBJECT_GROUP_TAG)


OBJECT_GROUP_TAG を指定すると、アバターのグループタグを取得出来ます


グループタグは、英語はもちろん、日本語などの文字列などでも問題無く取得出来ます。
アバターがグループタグを表示していない場合や、アバターでないオブジェクトを指定した場合は、空の文字列が返されます。

スクリプトから、アバターのグループタグをチェックしたい場合に使える機能です。

llGetObjectDetails(OBJECT_TEMP_ATTACHED)


OBJECT_TEMP_ATTACHED を指定すると、指定したオブジェクトが“一時的な装着オブジェクト”かどうかの状態を取得出来ます

0通常の装着
1一時的な装着オブジェクト

“一時的な装着オブジェクト”として装着されているかどうかを、これで調べることが出来ます。


今回も、細かい部分の機能追加という感じでしたけれど、あった方がいいものばかりですので、こういった進化はこれからも続けていって欲しいですね^^
このエントリーをはてなブックマークに追加

2016年10月26日水曜日

LSL に新機能「llSitOnLink」「llSetPrimitiveParams(PRIM_ALLOW_UNSIT/PRIM_SCRIPTED_SITS_ONLY/PRIM_SIT_TARGET)」が追加されました

LSL(Linden Script Language)に、下記の新機能が追加されました
  • llSitOnLink 関数が追加
  • llSetPrimitiveParams に「PRIM_ALLOW_UNSIT」「PRIM_SCRIPTED_SITS_ONLY」「PRIM_SIT_TARGET」パラメータが追加

What’s Happening Now in Second Life - secondlife
Release Notes/Second Life Server/16 - Second Life Wiki


llSitOnLink は、“スクリプトから”アバターをプリムに座らせることが出来る機能です。

LlSitOnLink - Second Life Wiki

これまでは、スクリプトからアバターを強制的に座らせることは出来ませんでした。
llSitOnLink を使用すると、それが出来るようになります。


ただし、誰でもどこでも強制的に座らせてしまうことが出来るようになってしまうのはよくないですので、llSitOnLink が使用可能なのは、「体験(Experience)」が有効になっている土地のみに限定されています。

「体験(Experience)」は、プレミアムアカウントでかつ土地を所有しているユーザーが、その土地に対して「Experience Key」を設定した場合のみ使用可能になる機能です。

Experiences in Second Life - Second Life
天使になりたくて: セカンドライフ公式ビュアー バージョン 3.8.0 が公開されました
天使になりたくて: 「Experiences(体験)」用のコンテンツの作り方

「体験(Experience)」が有効になると、アバターを自動でテレポートさせたり、アバターに HUD やアイテムを自動的に装着させたりといったことが、スクリプトから出来るようになります。

リンデン公式のゲーム「Linden Realms」や「Paleo Quest」などでおなじみの機能です。

今回追加された llSitOnLink も、その機能の一つです。

llSitOnLink を使うと、
  • 席に自動的に座らせる
  • 自動で乗り物(ライド)に乗せて、SIM 内を観光させる
  • 罠に触れたアバターを、罠に掛かったようにして一定時間動けないようにする
といったことが出来るようになります。

これまでは、ユーザーに座ってもらわないと動かなかった乗り物も、ユーザーが近づくだけで自動的に座らせて運行を開始するといったことが出来ます。
乗り込むアニメーションと組み合わせると、より自然な体験が出来るようになるような気がします^^


llSetPrimitiveParams には、下記のパラメータが追加されています。

PRIM_ALLOW_UNSITアバターが手動でプリムから立ち上がれるかどうかを設定
PRIM_SCRIPTED_SITS_ONLYアバターが手動でプリムに座ることが出来るかどうかを設定
PRIM_SIT_TARGETアバターがプリムで座る位置を設定

LlSetPrimitiveParams - Second Life Wiki

llSitOnLink と llSetPrimitiveParams の PRIM_ALLOW_UNSIT や PRIM_SCRIPTED_SITS_ONLY を組み合わせると、完全にスクリプトからしか操作が出来ない椅子などが作成可能になります。

llSetPrimitiveParams で PRIM_ALLOW_UNSIT を FALSE に設定すると、
「立ち上がる」ボタンを押しても、
“'llSitOnLink' will not allow you to stand at this time.”
というメッセージが表示されます

llSetPrimitiveParams で PRIM_SCRIPTED_SIT_ONLY を TRUE に設定すると、
プリムのメニューから「ここに座る」を選んでも
“配置に適した表面がありません。別の場所を試してみてください。”
というメッセージが表示されます

今回追加された llSitOnLink などの新機能の詳しい仕様は、Rider Linden さんが資料を公開されています。

Espeon Experience Enabled Sits.pdf

詳しい仕組みや使い方を知りたい方は、こちらもご覧ください。
このエントリーをはてなブックマークに追加

2016年2月1日月曜日

LSL に新機能「llGetObjectDetails(OBJECT_REZZER_KEY)」が追加されました

LSL(Linden Script Language)に新機能が追加されました。

Release Notes/Second Life Server/16 - Second Life Wiki

llGetObjectDetails 関数に、新しい定数が一つ追加されました。
  • OBJECT_REZZER_KEY

LlGetObjectDetails - Second Life Wiki


OBJECT_REZZER_KEY


llGetObjectDetails のフラグに OBJECT_REZZER_KEY を指定すると、Rez 元のオブジェクト(Rezzer)の Key を取得することが出来ます。


スクリプトからオブジェクトを Rez した際、Rezzer の object_rez イベントにて、Rez したオブジェクトの Key を取得することが出来ます。

Object rez/ja - Second Life Wiki

しかしこれまでは、Rez されたオブジェクト側では、自分がどのオブジェクトから Rez されたのかを知ることは出来ませんでした。

たとえば、利用可能台数の制限があるレンタルバイクの Rezzer で、

“レンタルバイクからアバターが降りたので、レンタルバイクのオブジェクトを消します”

といった情報を Rezzer に伝えたいといった場合、これまでは llRegionSay などで周辺の不特定多数のオブジェクト全てに呼びかけるといったことが必要でした。

しかしこの方法は、SIM の負荷的にはあまり良い方法とは言えません。


今回導入された llGetObjectDetails の OBJECT_REZZER_KEY フラグを使用すると、Rez されたオブジェクト内で Rezzer の Key が取得出来ます。
これにより、Rez されたオブジェクト側から Rezzer に、llRegionSayTo を使って直接情報が送れるようになります。

LlRegionSayTo/ja - Second Life Wiki

ちなみに、オブジェクトを Rez したのがアバターだった場合は、 OBJECT_REZZER_KEY フラグで取得出来るのはアバターの Key になります。


今回の機能は、SIM 内の不要な通信を減らす効果がある、すごくいい感じの新機能だと思います^^

今回は、既存の機能を llGetObjectDetails 関数でサポートしたものではなくて、新規に用意された機能みたいです。
そういう意味ではひさびさに、本当の意味での“新機能”だと思います。
このエントリーをはてなブックマークに追加

2016年1月23日土曜日

LSL に新機能「llGetObjectDetails(OBJECT_TOTAL_INVENTORY_COUNT、OBJECT_PRIM_COUNT)」が追加されました

LSL(Linden Script Language)に新機能が追加されました。

Release Notes/Second Life Server/16 - Second Life Wiki

llGetObjectDetails 関数に、二つの定数が追加されました。
  • OBJECT_TOTAL_INVENTORY_COUNT
  • OBJECT_PRIM_COUNT
LlGetObjectDetails - Second Life Wiki

OBJECT_TOTAL_INVENTORY_COUNT


llGetObjectDetails のフラグに OBJECT_TOTAL_INVENTORY_COUNT を指定すると、プリムのインベントリの中のオブジェクトの数を取得することが出来ます。

取得出来る値は、プリムのインベントリの中のオブジェクトの総数です。

これは、llGetInventoryNumber() で INVENTORY_ALL を指定した場合に取得出来る値と同じです。

LlGetInventoryNumber/ja - Second Life Wiki

プリムのインベントリの中には 3 つのオブジェクトがあるため、取得した値は 3 になります

OBJECT_PRIM_COUNT


llGetObjectDetails のフラグに OBJECT_TOTAL_INVENTORY_COUNT を指定すると、オブジェクト全体のプリム数を取得することが出来ます。

これは、llGetObjectPrimCount() で取得出来る値と同じです。

LlGetObjectPrimCount/ja - Second Life Wiki

オブジェクト全体のプリム数が 2 なので、取得された値は 2 になります

今回も、オブジェクトの情報を llGetObjectDetails 関数で一括で取得したい場合に便利な機能が追加されています^^
このエントリーをはてなブックマークに追加

2015年12月16日水曜日

LSL に新機能「llGetObjectDetails(OBJECT_OMEGA)」が追加されました

LSL(Linden Script Language)に新機能が追加されました。

Release Notes/Second Life Server/15 - Second Life Wiki

llGetObjectDetails() 関数に、OBJECT_OMEGA 定数が追加されました。

LlGetObjectDetails - Second Life Wiki

LlGetObjectDetails のフラグに OBJECT_OMEGA を指定すると、オブジェクトの回転速度を取得することが出来ます。

取得出来る値は、llTargetOmega で設定された値(vector)です。

LlTargetOmega/ja - Second Life Wiki

OBJECT_OMEGA で取得出来る値は、llGetOmega で取得出来る値と同じです。

LlGetOmega/ja - Second Life Wiki

オブジェクトの回転速度を取得するだけなら llGetOmega でも取得出来ますが、llGetObjectDetails ではオブジェクトの他の値と一緒に取得出来るのが特徴です。

llGetObjectDetails でオブジェクトの名前/位置/回転速度を一度に取得した例

list info = llGetObjectDetails(llGetKey(), [OBJECT_NAME, OBJECT_POS, OBJECT_OMEGA]);

スクリプトの処理を簡潔にまとめたい場合に、便利な新機能だと思います^^
このエントリーをはてなブックマークに追加

2015年5月8日金曜日

アバターの情報を取得するための新しい機能が LSL に追加されました

セカンドライフのスクリプト言語 LSL(Linden Script Language)に、アバターの情報を取得するための新しい機能が追加されました。


New LSL support for Avatar Shape, Height and Hover - Second Life


今回は llGetObjectDetails に、アバターの情報を取得するための二つの機能が追加されました。

OBJECT_BODY_SHAPE_TYPEアバターの性別を取得
OBJECT_HOVER_HEIGHTアバターの Hover Height の値を取得

LlGetObjectDetails - Second Life Wiki

OBJECT_BODY_SHAPE_TYPE

OBJECT_BODY_SHAPE_TYPE では、アバターのシェイプで設定した性別に対応した値が取得出来ます。


性別
0.0女性
1.0男性

この機能を使うことで、アバターの性別がスクリプトで分かるようになります。

  • 更衣室やコミュニティなどで、アバターの性別で利用する施設を分けたい
  • 渡す商品をアバターの性別に応じて変更したい
といった場合に便利な機能です。

OBJECT_BODY_SHAPE_TYPE の値は、タイニーやメッシュアバターなどのデフォルトのシェイプが非表示になっているアバターでも、本来のアバターのシェイプに設定された性別の値が取得されます。

このため、タイニーやメッシュアバターの方は、見た目とアバターの性別が異なってしまうことがありますので、アバターの性別が必要になるケースでは注意が必要です。

OBJECT_HOVER_HEIGHT

OBJECT_HOVER_HEIGHT では、ビュアーの「Hover Height」で設定した値が取得出来ます。


値は、ビュアーで設定した値(-2.0 〜 2.0 の範囲)がそのまま取得出来ます。

ビュアーで Hover Height の設定を変更すると、値はすぐにサーバーに送られます。
ただし、サーバーとのやり取りは時間がかかりますので、設定した値が実際に LSL で取得出来るのは、少し遅れることがあります。


今回、公式ブログで紹介されたのはこの二つの機能だけですけれど、これ以外にもいろんな機能が追加されていますので、気になる方は Second Life Wiki の LSL Portal を確認してみてください。

LSL Portal - Second Life Wiki
※Secvond Life Wiki は現在、日本語のページはリンクでエラーが発生してしまいますので、英語版で閲覧されることをお勧めします。
このエントリーをはてなブックマークに追加