2009年07月22日

クリエーター情報を参照するスクリプト

こんにちわ。

クリエーターの情報を参照して、特定のクリエーター以外のオブジェクトにスクリプトを入れた場合に、
動作しない、または、オブジェクトごと消してしまう
ということは可能でしょうか?

スクリプトは自分では書けず、以前友達に作ってもらっていたものを使っています。
記入してあるものを時間をかけてなんとなく理解しながら変更したりしているレベルです。。。
今持っているスクリプトに追記でできればいいのですが、難しいでしょうか?

その友達がまったく連絡がつかなくなってしまい、周りに聞ける人もいないので
皆様にお聞きしてみることにしました><

詳しい方、教えていただければ幸いです。
よろしくお願いします。


同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジのHUDについて (2015-07-01 04:51)
 モール用のプリムカウンターを探しています (2014-11-29 20:09)
 連続するアニメーションの処理 (2014-08-24 03:23)
 オブジェクトの上にフローティングテキストを出す。 (2014-08-22 16:46)
 チャットログの盗聴について (2014-02-03 03:43)
 椅子に座った後で位置調整できるスクリプト (2013-03-24 16:37)

Posted by mimika  at 16:41 │Comments(7)スクリプト関連

この記事へのコメント
このへんの関数を使えばできるんじゃないかと思います。
サンプルも載っていますので、いろいろ試してみてください。

■Contents内のスクリプトなどのCreatorのKey
http://wiki.secondlife.com/wiki/LlGetInventoryCreator
■PrimそのもののCreatorのKey
http://wiki.secondlife.com/wiki/LlGetCreator
■オブジェクトの削除
http://wiki.secondlife.com/wiki/LlDie
■スクリプトの名前
http://wiki.secondlife.com/wiki/LlGetScriptName
Posted by you Xiao at 2009年07月22日 21:25
you Xiao さん
ありがとうございます^^
ちょっと勉強してみます^^
Posted by mimika at 2009年07月23日 12:06
挫折しました><

自分のクリエータのキーを入力しておいて、
それと一致しない場合はカウントダウンでスクリを削除する
みたいな事ができればと思っています。

llGetCreator() でプリムのクリエーターキーを取得できることはわかったのですが、応用が利きません。

default
{
touch_start(integer total_number)
{
llSay(0,"My creator is: "+(string)llGetCreator() );

integer olf;
for(olf = 100; olf > 0; --olf)
llSay(0, (string)olf);
llRemoveInventory(llGetScriptName());

}

}

まだこの程度で止まっています。
役に立たないスクリプトです。。。
ヒントいただければ幸いです。

それと、これ、カウントダウンが早すぎ^^;
Posted by mimika at 2009年07月23日 18:13
<code>
state_entry()
{
if(llGetCreator() != "スクリプト作者のUUID")
   {
   llRemoveInventory(llGetScriptName());
   }
}

</code>

スクリプトを消すのならこれでいいと思います。

カウントダウンさせたいのなら
タイマーイベントを使うか、forの中でllSleepで大丈夫かと思います。
Posted by mayuko Nishi at 2009年07月23日 19:13
こんな感じでしょうか
in worldで確認していませんので、雰囲気だけですが。

default
{
 state_entry()
 {
  // PrimとScriptの製作者が違う場合
  if(llGetCreator()!=llGetInventoryCreator(llGetScriptName()))
   state delscript;

  // 本来の処理
 }
}

state delscript
{
 state_entry()
 {
  integer i=10;
  llOwnerSay("このPrimにいれてもダメです\n"+(string)i+"秒後にScriptは消えます");

  for (;i>0;++i){
   llSetText((string)i,<1.0,1.0,1.0>,1.0);
   llSleep(1.0);
  }
  llSetText("",<1.0,1.0,1.0>,1.0);
  // Scriptを削除
  llRemoveInventory(llGetScriptName());

  // Primを消す
  // llDie();
 }
}

※インデントは全角スペースでつけています
Posted by you Xiao at 2009年07月23日 20:34
あ、間違えました。
for文の最後の++iを--iにしておいてください
Posted by you Xiao at 2009年07月23日 20:39
you Xiao さん、mayuko さん

ご返信有難うございました^^
書き込んでいただいたスクリプトを元に、
苦心の末、なんとか今もっているスクリプトに実装できました!!
でも楽しかったです。感謝しています!
有難うございました^^
Posted by mimika at 2009年07月24日 18:17
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。