arz Nitelyってシステム屋どうよ?

SecondLifeとWebとの融合を模索するセミプロWeb屋の挑戦

レンタルシステム

2009年02月20日 – 03:48

Creatizm Labo用にレンタルシステムを開発していたところ
タイムリーに「レンタルシステムを開発してほしい」というお声をかけて頂きました^^

「市販の箱形は置きたくない
 あの形とフローティングテキストが嫌」

ということで、詳しく話を伺ってみますと、かなり凄いSIMを造営中の方で
実際に見せて頂いたんですが、そのスケールの大きさと一貫したコンセプトに脱帽…

ウチのCreatizm Laboなんかとうていかないそうにありませんでした…

 

…と、ちょっと話がそれましたが

結局、ハードはご自身で準備して頂き、LB Systemはソフトを提供するということで話がまとまりました

ウチで使おうと思っていたものを叩き台にして、次のような機能を盛り込んでみました^^

 

1. サーバ機を準備し、設定はサーバ機から読み込む

   あらかじめ、サーバ機にプリム数や価格などの設定を複数保存しておき、各ブース
   から設定を選択して読み込みます。もちろん、サーバを使わずにブースに設定を書
   き込むこともできますし、サーバ経由で起動 / ローカル起動のスイッチもついてま
   す。

2. フローティングテキストを使わず、状況はステータスランプの色と点滅で表現

   レンタル募集中 / レンタル中 / 支払い延滞中などのステイタスを色で表示すると
   ともに、タッチで詳しい状況をしゃべるようにしました。遠くから見ても状況が
   一目瞭然ですし、フローティングテキストを使わないのですっきりした見栄えに
   仕上げることができます。

3. オートアップデート機能

   サーバ機に返金機能を実装することにより、ブース側はパーミッション認証いらず
   でリセット可能。すなわち、オーナー不在でもLB System側でアップデートでき
   ちゃいます^^ オーナーがご自身でアップデートする場合も「アップデータを置
   いておくだけ」で、何も操作せずとも「アップデート→リセット→アップデート直
   前の状態に復帰」までを勝手にやってしまいます。もちろん、レンタル中にリセッ
   トしてもテナントさんのデータは保持され続けます^^

4. 予約機能

   ブースの利用者を指定してしまうことができます。先に指定してしまいますので、
   その後はオーナーが立ち会うことなく、特定の人と契約を交わすことができます。
 

これ、現在テストを行っているんですが
はじめのサーバ設定を済ませてしまうとそれからの運用がむちゃくちゃ楽です!
(サーバの設定は、市販のレンタルボックスの設定と同程度です)

あらかじめ設定を複数準備しておき、設定変更時は「どの設定を使うか」を選択するだけで
あっという間に設定変更できてしまいます

以前、HUDから設定できるレンタルシステムはできないか? とご相談頂いて
そのときは、HUDよりもWEB連携に興味があってお断りしたんですが
これはWEBを使うよりも楽かもしれませんし
インワールドのみで完結するシステムなので、通信エラーやハッキングの心配も減りますね^^

モール経営なさっている方、これから考えていらっしゃる方
独自のレンタルシステム構築しますよ^^

建物自体に組み込むこともできます!

 

建物自体に組み込んだ例はこちらに設置してテスト中です^^
よかったらご参考になさってくださいませ



ようやく完成がみえてきた

2009年02月09日 – 14:45

アクセサリー屋さんからご注文いただきましたオーダースクリプトの完成がようやく見えてきました。

ご注文内容は…
1. テクスチャーチェンジ機能
  ・任意の特定のプリム(複数アリ)のみテクスチャーが変わること
  ・テクスチャーごとにオフセットや倍率、グロー、色などのパラメータの指定ができること
  ・使用するテクスチャーの枚数は商品ごとに異なる
  ・テクスチャーチェンジ機能を必要としない商品もある(その場合はダイアログに表示させない)
2. リサイズ機能
  ・どれか1プリムでも最小の大きさ(0.01m)になればそれ以上縮小させないこと(拡大も同様)
  ・インストールが簡単なこと
  ・リンク数が最大の255でもきちんと動くこと
  ・拡大 / 縮小はダイアログから行う(拡大 / 縮小それぞれ1%、5%、10%ずつ)
  ・リサイズを使わない商品もある(その場合はダイアログに表示させない)
3. パーティクル機能
  ・任意の特定のプリム(複数アリ)からパーティクルを出せること
  ・パーティクルを使わない商品ではダイアログからそのメニューを消せること
4. 効果音再生機能
  ・一定時間ごとに効果音を再生できる(ダイアログから周期とオン / オフを選択可能)ように
  ・効果音を使わない商品ではダイアログからそのメニューを消せること

※ これらをどんなアクセサリーにも対応できるよう汎用的につくってほしい(設定は簡単に)

 

単体スクリプトというよりも、ソフト開発に近いですねw
ウチが最も得意とする分野です^^

というわけで、こんな風に設定できるようにしてみました
(コアスクリプトは別途存在しますので、このスクリプトだけを入れても何もできませんw)



llGetOwner()とllDetectedOwner()の微妙な違い

2009年01月19日 – 23:33

Second Life Wikiによると、

検出されたオブジェクトが同じリージョンにあるとき llGetOwnerKey(llDetectedKey(number)) はllDetectedOwner(number) と同じ

とありますが、調べてみると結果が違いましたので(既出かもしれませんが)ご報告します。

…の前に、何のことか分からない人のためにw

この関数は、オブジェクトのUUIDを引数に指定し、「そのオブジェクトのオーナーのUUID」を返すものです。持ち主が誰かを調べたいときによく使います。この関数にディテクト系の関数を加え

とすると、ディテクト(衝突やセンサーなどで検知すること)によりヒットしたオブジェクトのオーナーを調べることができます。これは、同じディテクト系関数に「llDetectedOwner(number)」という関数がありますので、こちらを使うことにより同じ結果が得られるハズなんですが…

(前置き終了)

さてさて、何が違ったかというと、「検知されたオブジェクトがグループ所有の場合の戻り値」です

  • llDetectedOwner(number)では、NULL_KEYが返される
  • llGetOwnerKey(llDetectedKey(number))では、グループのUUIDが返される

という結果になっていました。

llDetectedOwner()は、アバターのみを参照する関数のようですね^^

 

ついでに、llRequestAgentData()のタイムアウトは何秒が妥当か? 調べてみましたw



アップデート: lsl-ml.lib

2008年12月02日 – 17:20

llLoadURL()関数を忘れていたので追加しました。
詳細はこちらをご覧ください。

余談ですが…

当初、ml.moduleとしてご紹介しましたが
「モジュール」というよりも「ライブラリ」なのかな?と思いまして改名しましたw



ml.module(多言語化モジュール)

2008年11月28日 – 04:15

とりあえず、やりたいこととテストコードをつらつらと…

1. やりたいこと

llSay(), llOwnerSay(), llInstantMessage(), llDialog()などUIに利用する関数を、代替関数を用いることで多言語化させる

ちと具体的に書くと…

llSay(0, "Hello, Avatar");

説明も不要なこの関数を…

mlSay(0, "Hello, Avatar", llGetAgentLanguage(llGetOwner()), []);

という感じで、代替関数を使うことによって、”Hello, Avatar”の部分を各言語に置き換えてしゃべらせたいと^^
そういうわけなんですw
(mlはバレバレですが、MultiLingualからとってます)

 

2. テストコード

んで、いきなりですがコードからw

新旧の情報が混同しないよう、この投稿内容は削除しhttp://arznitely.com/document/?id=ja:free_lsl:lsl-ml.libにおいて、最新の情報を公開しています。そちらをご覧ください。

前者が「ml.module」で、後者のスクリからそのモジュールを呼び出しています

とりあえず、llSay(), llOwnerSay(), llInstantMessage()の代替関数をつくってみました
(llDialog()はまだです)

細かいことは抜きにして、興味のある方は試してみてくださいw

なるべく汎用性を持たせ、GPLライセンスで配布したいと思っていますので、突っ込み大歓迎です♪

 

─── 追記:2008-11-28 15:10 ───
llShout(), llWhisper(), llRegionSay(), llSetText()の代替関数も追加します
あと…何かあったかな??

─── 追記:2008-11-29 02:52 ───
llShout(), llWhisper(), llRegionSay(), llSetText(), llDialog()の代替関数を追加
llDialog()の「ボタン」を多言語化するかどうか悩み中…

─── 追記:2008-11-30 02:21 ───
下記ページへ移転しました。最新情報はそちらをご覧ください。
http://arznitely.com/document/?id=ja:free_lsl:lsl-ml.lib