Posted by   at 

2009年01月23日

物々交換できる箱を作りたい

スクリプト、いくら考えても調べても、自分でやると機能しますが、
他人がやるとうまくいきません。
何が悪いのか、教えていただけると助かります。
簡潔に要旨を書きます。

自分が作って販売した初期のアニメーションが気に入らないため
買っていただいた人に改良したものと交換できる箱を設置したい。

llAllowInventoryDrop( TRUE );
だけでは、誰がドロップしたか判定できないので、まずタッチしてもらい
タイマーをかけて一時的にドロップ可とした。
他の人にやってもらうとこの部分は機能している。

ドロップされたアニメ名とUUIDが一致すると新作アニメを渡す。
違うアニメをリネームして該当アニメに見せかけても受け付けない。
ドロップされたままコンテンツを放置すると次にドロップしたものに
1, 2, 3,・・・と次々と名前の後に自動的に番号が振られ、
アニメ名が一致しなくなるため、ドロップされるとすぐ
llRemoveInventory("アニメ名");
で消去するようにした。
自分でテストすると全て機能するが、他人がやるとどれも機能しない。
おそらく、他人ではコンテンツの中身を消去できないのではないか?

以下、ソースです。このまま使ってもうまくいきません。
-----------------------------------------------------------------------------------------------------
key avatar;
string animation_name = "アニメのUUIDをここに入れる";
default
{
touch_start(integer total_number)
{ avatar = llDetectedKey(0);
llAllowInventoryDrop( TRUE );
llSetTimerEvent(30);
llSay(0, "Drop 'アニメ名' animation here within 30 seconds\n 30秒以内に'アニメ名'アニメをドロップしてください");
}

changed( integer changed_flag )
{ key chk = llGetInventoryKey("アニメ名");
if ( changed_flag & CHANGED_INVENTORY ) {
if(chk == animation_name)
{
llSay(0, "OK");
llGiveInventory(avatar , "渡すアニメ名");
llRemoveInventory("アニメ名");
llSetTimerEvent(0);
llAllowInventoryDrop( FALSE );
}
else{
llSay(0, "NO");
llRemoveInventory("アニメ名");
llSetTimerEvent(0);
llAllowInventoryDrop( FALSE );
}
}
}
  timer()
  {
llAllowInventoryDrop( FALSE );
llSetTimerEvent(0);
llSay(0, "Time out. Touch again");
 }
}
-----------------------------------------------------------------------------------------------------

うまくいく方法がありましたら宜しくお願いします。  


Posted by Namidame  at 18:31Comments(13)スクリプト関連

2009年01月23日

ライブビデオストリーム

SL内に、RLからのライブ映像を流したいのですが
以前、スッティッカムを使って、SLに流していた人がいるとのことです
どのようにするのでしょうか?
お分かりになる方、お教えください  


Posted by isolette  at 16:15Comments(0)

2009年01月23日

SIM内のどこかにある自作のオブジェクトの捜索方法

SIM内のどこかでさまよっている自作のオブジェクトの回収方法でアドバイスください。
とても困っています。

事の成り行き(笑い話みたいですが、本気で困ってます)

1.メインランドにある自分の土地の上空800m付近のスカイボックスで作りかけのオブジェクト(タコです)
 をREZしました。このタコはREZした後クリックするとその場所を基準に一定範囲ランダムに動きまわる
 ようなスクリプトの入った物理オブジェクトです。
2.高さ方向はllSetHoverHeightを使って地面から3~6mの範囲で浮くようにしていました。
3.800mの位置で動作をさせたのでタコは一瞬で消えてしまいました(たぶん、地面から3~6m位置に移動しようとして)
4.あわててスカイボックすの真下の地面におりましたが、タコは見つかりません。
 ちなみにタコはデバッグのために1秒おきに自分の高さ(地面からの)をllOwnerSayで告知するので今も活動していること
 がわかります。(X,Y座標も告知するようにしてなかったことが悔やまれます)
5.どうしても見つからないため、再びスカイボックスに戻って同じタコを出して座ってからクリックしてみました。
 するとスカイボックすの床との衝突でタコは痙攣したように高速で動き、そのまま、外へ飛び出しました。
 落ち着いた先に、残念ながら元のタコはいません。
6.5の動作を何度かやってみると毎回違う場所に落ち着くということがわかりました。
7.オブジェクト名がわかっているのでそれをセンサーで探すHUDを作ってSIM内をあっちこっち移動してますが
 いまだにみつかりません。ビーコンも物理オブジェクトがハイライトするようにしています。

SIMのどこかに今もさまよってるタコを見つける方法はないでしょうか。
地面から3~6mにいる前提で探していますが、スクリプトはどこかのサイトで見たものをちょっと変更した
作りかけのものなので、意図した動作ではない可能性もあります。
センサーは半径96m内を探す設定にしているのですぐ見つかりそうな気もしたんですが・・・

アドバイスいただけると幸いです。  


Posted by Gonzo  at 14:35Comments(3)その他の質問