2009年07月22日
クリエーター情報を参照するスクリプト
こんにちわ。
クリエーターの情報を参照して、特定のクリエーター以外のオブジェクトにスクリプトを入れた場合に、
動作しない、または、オブジェクトごと消してしまう
ということは可能でしょうか?
スクリプトは自分では書けず、以前友達に作ってもらっていたものを使っています。
記入してあるものを時間をかけてなんとなく理解しながら変更したりしているレベルです。。。
今持っているスクリプトに追記でできればいいのですが、難しいでしょうか?
その友達がまったく連絡がつかなくなってしまい、周りに聞ける人もいないので
皆様にお聞きしてみることにしました><
詳しい方、教えていただければ幸いです。
よろしくお願いします。
クリエーターの情報を参照して、特定のクリエーター以外のオブジェクトにスクリプトを入れた場合に、
動作しない、または、オブジェクトごと消してしまう
ということは可能でしょうか?
スクリプトは自分では書けず、以前友達に作ってもらっていたものを使っています。
記入してあるものを時間をかけてなんとなく理解しながら変更したりしているレベルです。。。
今持っているスクリプトに追記でできればいいのですが、難しいでしょうか?
その友達がまったく連絡がつかなくなってしまい、周りに聞ける人もいないので
皆様にお聞きしてみることにしました><
詳しい方、教えていただければ幸いです。
よろしくお願いします。
テクスチェンジのHUDについて
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
サンプルも載っていますので、いろいろ試してみてください。
■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
ありがとうございます^^
ちょっと勉強してみます^^
自分のクリエータのキーを入力しておいて、
それと一致しない場合はカウントダウンでスクリを削除する
みたいな事ができればと思っています。
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());
}
}
まだこの程度で止まっています。
役に立たないスクリプトです。。。
ヒントいただければ幸いです。
それと、これ、カウントダウンが早すぎ^^;
state_entry()
{
if(llGetCreator() != "スクリプト作者のUUID")
{
llRemoveInventory(llGetScriptName());
}
}
</code>
スクリプトを消すのならこれでいいと思います。
カウントダウンさせたいのなら
タイマーイベントを使うか、forの中でllSleepで大丈夫かと思います。
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();
}
}
※インデントは全角スペースでつけています
for文の最後の++iを--iにしておいてください
ご返信有難うございました^^
書き込んでいただいたスクリプトを元に、
苦心の末、なんとか今もっているスクリプトに実装できました!!
でも楽しかったです。感謝しています!
有難うございました^^