2009年07月14日
timerイベントとstate移動と私。
とっても久し振りですが、激しく地味な内容で。
今日の検証実験。
試してみた限りですが、timerイベントがキューに入ってる状態でstateを移行すると、
state_entry内でllSetTimerEventで再設定(0.0以外)してもキュー内のイベントがクリアされない、事があるみたいです。
再設定値より短時間のイベントがキューに入ってると、想定してるより短時間でtimerイベントが実行される訳です。
state_entryを出た直後、タイミングによってはrun_time_permissionsとかchangedよりも先にtimer突入とか。
これは前後の命令の関係次第とか、monoコンパイルの直後1回目だけとか、起こったり起こらなかったりもします。
なんとなくタイマーの挙動がおかしくて悩んでる方は、現状 (Second Life Server 1.26.4.120562) では
state移動する場合はllSetTimerEvent(0.0)で一度無効にしてキューから削除してから改めて目的のタイマーを設定するのが良いかも知れません。
今日の検証実験。
試してみた限りですが、timerイベントがキューに入ってる状態でstateを移行すると、
state_entry内でllSetTimerEventで再設定(0.0以外)してもキュー内のイベントがクリアされない、事があるみたいです。
再設定値より短時間のイベントがキューに入ってると、想定してるより短時間でtimerイベントが実行される訳です。
state_entryを出た直後、タイミングによってはrun_time_permissionsとかchangedよりも先にtimer突入とか。
これは前後の命令の関係次第とか、monoコンパイルの直後1回目だけとか、起こったり起こらなかったりもします。
なんとなくタイマーの挙動がおかしくて悩んでる方は、現状 (Second Life Server 1.26.4.120562) では
state移動する場合はllSetTimerEvent(0.0)で一度無効にしてキューから削除してから改めて目的のタイマーを設定するのが良いかも知れません。
2007年10月20日
体験版

SSだと何のヘンテツも無いですが、作成してたペットを体験版として一時的に操れるようなのを作ってみました。下のヘタいのはジェネレーターというか、rezzerになってます。
ただのペットなら体験も何も無いのですけど、誰かを追跡させたり、乗ると操縦できるみたいな感じになっているので、そこらへんが出来ないとイマイチですからね。
なんで体験版かというと、少し前から話を聞いていた LSL convention Japan 2007 が、なんとなく引っかかっていたもので。あ、あと、おたま型してるのはあくまで仮ですし。
…で、気がついたらなんとなく体験版として用意しちゃってたんですが、調べ直したら開催日が翌日(20日)から!
という感じでしたが、飛び入りみたいな感じで置かせてもらいました。(お手数おかけしてます。)
ついでに土地権限の問題とかが判明してみたり。危険危険…。あと、会場は高度が高かったので低地用の乗り物設定が使えなかったり。
そんな感じですが、よかったら見つけて試してみてください。
会場、全体を全然把握してませんが是非見て回ってみようかと思います。面白そうー。
それはそうと。
先週の土日あたり、めちゃくちゃ遊んでた気がするんだけど、手元に残っていたSSはこの1枚ぐらいでした。取り忘れ過ぎー。

みやおかさん、意識不明の重体のようでした。というか寝落ち…。この後当人は義足義手生活を余儀なくされてるようです。

某所でヘタイニーと名付けられたっぽい(というか自分で言いましたが)コレは、こっそり某所に転がしてあります。おたまっぽいのも…。カメラちょっと離れると大変な感じだけどー。
手数料無料でうたわれていたSLCOMが、突然ベンダー型の上納有りになってしまいました。
どうするかちょっと悩んでみましたが、一応という事で継続してみました。数の制限はあるものの、複数店舗にまた置けるようになったのは利点ではあります。
このベンダーの設定は、商品リストを全て記述する必要があります。正確に記述しないといけないので、数があるとちょっと大変。
という事で、通常パッケージなどの箱の中に入れると、中身をリストアップしてくれるスクリプトをざっくりと書いて見ました。今から設定するって人は使ってみてください。
// get inv list
default{
state_entry(){
integer n = llGetInventoryNumber(INVENTORY_ALL);
integer i;
string name = llGetScriptName();
string log = "\n";
string s;
for(i=0; i<n; i++){
s = llGetInventoryName(INVENTORY_ALL, i);
if(s != name) log += s+"\n";
}
llOwnerSay(log);
llRemoveInventory(name);
}
}
2007年10月01日
この頃の過ごし方
Cueさんの新製品「ちびっこはかせ」と着せ替えセットが販売開始されてます。KUROBORO各店、それにTOMO LABにも置いてあります。紹介はこちら。

早速コートその他を着込んでみたところ、なんだか研究室を私物化してそうな感じになってみたり。これからの季節には暖かそうでいいですね。
で、最近。
ちょこっとしたものは常にいじってますが、しばらくまともにスクリプトを書いてないような感じでしたけど、デカイニー後あたりからはスクリプト書き三昧でした。(あとカメラフリーズ三昧。)
アイテムキャンプ(頼まれ物)、視点固定HUD、primの精密座標指定…転じてprim整列、TINY用色変え、etc。
…とっても地味でありますね。

prim整列、こんな感じで。分かりにくいけど均等間隔に並べたりとか、指定の軸に揃えたりとか。便利なような無いような?
いっぱいprim動かして並べるとちょっと面白い。多過ぎるとヒープがオーバーするんだけど(仕様)。

色変え。以前同様なのを作成してたけど、primの面までは指定できなく、設定が面倒くさい感じだったので作成し直し。
ついでにαやテクスチャ指定も可能に…って、透け過ぎハズカシー。
まぁ設定は更にややこしくなった訳ですけど。
そういえば、少し前にある目的用に作成したベンダーが、当初の目的と違う用途だけど最近稼動し始めたか。
TINY KIT向けのスクリプトの拡張と再調整…は、方向性があやふやな感じのままだった。まぁ自分でも使うので良いのだけど。
という感じで、もう少し華々しいのも作らなければっ。
βグリッドに新しい物理エンジンが入ってるという事でみんなで偵察に。
物理で落ちにくいってウワサですが果たして。

球は多分全部物理(出したのは他人)。
確かに物理同士が沢山重なったりしても(あんまり)SIMは落ちませんね。ただし激重ですけど。
ただ、もしこのままだとだいぶメインと仕様が異なっているので大変か。うれしい変更も多いけど。
まぁβよりメインのカメラ移動でのフリーズを早急にどうにかして欲しい今日この頃でした。

早速コートその他を着込んでみたところ、なんだか研究室を私物化してそうな感じになってみたり。これからの季節には暖かそうでいいですね。
で、最近。
ちょこっとしたものは常にいじってますが、しばらくまともにスクリプトを書いてないような感じでしたけど、デカイニー後あたりからはスクリプト書き三昧でした。(あとカメラフリーズ三昧。)
アイテムキャンプ(頼まれ物)、視点固定HUD、primの精密座標指定…転じてprim整列、TINY用色変え、etc。
…とっても地味でありますね。

prim整列、こんな感じで。分かりにくいけど均等間隔に並べたりとか、指定の軸に揃えたりとか。便利なような無いような?
いっぱいprim動かして並べるとちょっと面白い。多過ぎるとヒープがオーバーするんだけど(仕様)。

色変え。以前同様なのを作成してたけど、primの面までは指定できなく、設定が面倒くさい感じだったので作成し直し。
ついでにαやテクスチャ指定も可能に…って、透け過ぎハズカシー。
まぁ設定は更にややこしくなった訳ですけど。
そういえば、少し前にある目的用に作成したベンダーが、当初の目的と違う用途だけど最近稼動し始めたか。
TINY KIT向けのスクリプトの拡張と再調整…は、方向性があやふやな感じのままだった。まぁ自分でも使うので良いのだけど。
という感じで、もう少し華々しいのも作らなければっ。
βグリッドに新しい物理エンジンが入ってるという事でみんなで偵察に。
物理で落ちにくいってウワサですが果たして。

球は多分全部物理(出したのは他人)。
確かに物理同士が沢山重なったりしても(あんまり)SIMは落ちませんね。ただし激重ですけど。
ただ、もしこのままだとだいぶメインと仕様が異なっているので大変か。うれしい変更も多いけど。
まぁβよりメインのカメラ移動でのフリーズを早急にどうにかして欲しい今日この頃でした。
2007年06月20日
アクセスカウンタ
最近微妙なネタしかなかったりするので、世界展で設置していたアクセスカウンタを紹介してみようかと思います。
設置は、人が踏みそうな場所に薄い板などを置いてスクリプトを入れるだけ。
同じグループの人がタッチすると人数を教えてくれます。 続きを読む
設置は、人が踏みそうな場所に薄い板などを置いてスクリプトを入れるだけ。
同じグループの人がタッチすると人数を教えてくれます。 続きを読む
2007年05月12日
LSLでプリムを10m以上移動させる
TINY展の下準備をしていて撮った、おたまをいっぱい並べた画像を…、とも思ったけど飽きたので(何て事を)。使いどころ次第で有効なtipを。
スクリプトでオブジェクトを移動させる場合、一度に10mまでという制限があったりします。エレベーターなどでカクカク昇って行くようなのはそういった理由もあります。もちろん演出でゆっくりな場合もありますが。
ところで、物理属性ではないオブジェの移動は通常 llSetPos() を使いますが、もう一つ、llSetPrimitiveParams() で指定するという方法もあります。どちらもこの10m制限に引っかかるのですが、後者の方は複数のパラメータをいっぺんに(サーバー内で)処理する事が可能です。…実はこれを利用して、座標を複数回指定すると10m制限を突破する事が出来てしまうんです。
ソースはここの一番下の関数を利用するといいでしょう。なんかとても最適化されているようですから。むしろ利用するなら絶対これを。
特殊な使い方としては、通常は不可能な10m以上のスクリプト禁止地帯を横断したりもできたり。
ちょっと危険っぽい匂いがしますが、実際問題として、距離が遠いほどSIM自体に負荷が掛かっていきます。良く考慮してから利用すると良いでしょう。 続きを読む
スクリプトでオブジェクトを移動させる場合、一度に10mまでという制限があったりします。エレベーターなどでカクカク昇って行くようなのはそういった理由もあります。もちろん演出でゆっくりな場合もありますが。
ところで、物理属性ではないオブジェの移動は通常 llSetPos() を使いますが、もう一つ、llSetPrimitiveParams() で指定するという方法もあります。どちらもこの10m制限に引っかかるのですが、後者の方は複数のパラメータをいっぺんに(サーバー内で)処理する事が可能です。…実はこれを利用して、座標を複数回指定すると10m制限を突破する事が出来てしまうんです。
ソースはここの一番下の関数を利用するといいでしょう。なんかとても最適化されているようですから。むしろ利用するなら絶対これを。
特殊な使い方としては、通常は不可能な10m以上のスクリプト禁止地帯を横断したりもできたり。
ちょっと危険っぽい匂いがしますが、実際問題として、距離が遠いほどSIM自体に負荷が掛かっていきます。良く考慮してから利用すると良いでしょう。 続きを読む
2007年05月10日
にほんごであそうぼう
SecondLife日本語版、日本語版と、何かと引き合いに出されたりします。
本家の登録フォームが英語だけだったり、クライアントが誤訳だらけのままで紛らわしかったりと、確かに微妙ですが、個人的にはまぁ問題はありません。日本人オンリーサーバーとかにはならないでしょうし望んでもいません。
しかし。1つ対応してもらいたい事があります。LSL内に日本語を置きたい…。もちろん、日本語文字列解析(関数)も。これ入らなかったらJAROに訴えてやるー!
あ、JAROは日本だけか。
まぁそんな感じですが、一応無理矢理日本語を扱えなくもないです。
全部1byte文字に置き換えちゃえばいいんですね。
そのための方法は、LSLではとりあえず2通り存在します。メールなどで使われるBASE64ってのと、ブラウザのURLなどで使われるURLエンコードって方法。 続きを読む
本家の登録フォームが英語だけだったり、クライアントが誤訳だらけのままで紛らわしかったりと、確かに微妙ですが、個人的にはまぁ問題はありません。日本人オンリーサーバーとかにはならないでしょうし望んでもいません。
しかし。1つ対応してもらいたい事があります。LSL内に日本語を置きたい…。もちろん、日本語文字列解析(関数)も。これ入らなかったらJAROに訴えてやるー!
あ、JAROは日本だけか。
まぁそんな感じですが、一応無理矢理日本語を扱えなくもないです。
全部1byte文字に置き換えちゃえばいいんですね。
そのための方法は、LSLではとりあえず2通り存在します。メールなどで使われるBASE64ってのと、ブラウザのURLなどで使われるURLエンコードって方法。 続きを読む
2007年05月05日
リセット地方
だいぶ前から作ってる、あるスクリプトがあるんですが、ほぼ完成してるのに未だ商品として出せない物があります。
何がまずいって。どうもSIMにリセットがかかる原因になってるっぽい疑惑が濃厚…。そんなの売れませんね。ガクブル。
物理属性で、あれしたりこれしたりするとあれがこれで…。まぁ良く分からないけどサーバーのプログラムの、まだ認識されて無いバグに効果抜群のようで起こっちゃってるっぽい。良く分からないけど。
まだ疑惑が少なかった頃(1.4.0あたり?)、ある方に相談したら、その人もなんか身に覚えがある気がするとの事で、物理大量発生実験大会が始まったりしました。

全部物理。もちろん良い子はマネしないでね。約束ダヨ?
この時は非常に重くはなったのですが、SIM落ちが発生したりはしませんでした。ううむ。
で。最近は疑惑の奴の実験をやると、たとえとあるSIMに1人しか居なくてもリセットかかるっぽいので…。原因になってるのは間違いないっぽい。
そんなこんなで人気の無い時とかに地味に原因究明するか、Lindenさんとお友達になる(相談する)か。なかなか辛いところです。みんなも気をつけよう!
続きを読む
何がまずいって。どうもSIMにリセットがかかる原因になってるっぽい疑惑が濃厚…。そんなの売れませんね。ガクブル。
物理属性で、あれしたりこれしたりするとあれがこれで…。まぁ良く分からないけどサーバーのプログラムの、まだ認識されて無いバグに効果抜群のようで起こっちゃってるっぽい。良く分からないけど。
まだ疑惑が少なかった頃(1.4.0あたり?)、ある方に相談したら、その人もなんか身に覚えがある気がするとの事で、物理大量発生実験大会が始まったりしました。

全部物理。もちろん良い子はマネしないでね。約束ダヨ?
この時は非常に重くはなったのですが、SIM落ちが発生したりはしませんでした。ううむ。
で。最近は疑惑の奴の実験をやると、たとえとあるSIMに1人しか居なくてもリセットかかるっぽいので…。原因になってるのは間違いないっぽい。
そんなこんなで人気の無い時とかに地味に原因究明するか、Lindenさんとお友達になる(相談する)か。なかなか辛いところです。みんなも気をつけよう!
続きを読む
2007年04月27日
経過日数を計算
いろいろやってると、作ったけど使わなかった、なんて処理が出てきます。
何かに使おう…なんて思いつつも今ひとつ使いどころがなかったりするんですよね。
まぁそんなのばっかりだから困り物ですが。
そんな貴重な(?)ボツコレクションから1つ。
"YYYY-MM-DD" 形式の日付から、ある決まった日付(1970-01-01 1600-01-01)からの経過日数を求める関数です。
これを使うと、ある日付からの経過日数を求める事ができます。
※不具合検証中。とりあえず訂正しました。 続きを読む
何かに使おう…なんて思いつつも今ひとつ使いどころがなかったりするんですよね。
まぁそんなのばっかりだから困り物ですが。
そんな貴重な(?)ボツコレクションから1つ。
"YYYY-MM-DD" 形式の日付から、ある決まった日付(
これを使うと、ある日付からの経過日数を求める事ができます。
※不具合検証中。とりあえず訂正しました。 続きを読む