2009年08月10日
ポストを作りたい その2
■はじめに
まじめにスクリプトを読んでくれる人が居るとは思わなかったので、
レスついたらアップしようと思ってたスクリプトをあげますw
今回は、送り先のUUIDを一行ごとに書いたノートカードusersから
UUIDを読み取ってから起動する仕様にしています。
■youさんから受けた指摘に対する、今回のスクリプトの解答
1.maxmaxのループ
舐めた変数名ですいません、処理を変えて削除しましたw
2.削除用maxのループ
これまた酷い処理ですいません、処理を変えましたw
3.Changedの件(1)→削除するファイルが、すでに無くなっていた場合どうする?
これは、対応方法分かりませんでした。インベントリの存在確認関数ってありましたっけ。
4.Changedの件(2)→削除処理時に呼ばれるChangeはどうする?
ノートカードを送れる常態か、フラグで管理するようにしました。
■スクリプト
■users ノートカードの内容
まじめにスクリプトを読んでくれる人が居るとは思わなかったので、
レスついたらアップしようと思ってたスクリプトをあげますw
今回は、送り先のUUIDを一行ごとに書いたノートカードusersから
UUIDを読み取ってから起動する仕様にしています。
■youさんから受けた指摘に対する、今回のスクリプトの解答
1.maxmaxのループ
舐めた変数名ですいません、処理を変えて削除しましたw
2.削除用maxのループ
これまた酷い処理ですいません、処理を変えましたw
3.Changedの件(1)→削除するファイルが、すでに無くなっていた場合どうする?
これは、対応方法分かりませんでした。インベントリの存在確認関数ってありましたっけ。
4.Changedの件(2)→削除処理時に呼ばれるChangeはどうする?
ノートカードを送れる常態か、フラグで管理するようにしました。
■スクリプト
list member = [];
integer _max = 0;
integer _cnt = 0;
integer flg = TRUE;
string user = "users";
string _queryid;
default
{
state_entry()
{
llSetText("userlist update",<1.0,0.0,0.0>,1.0);
member = [];
_max = 0;
_cnt = 0;
_queryid = llGetNumberOfNotecardLines(user);
}
// ノートカードを受け取って認証
dataserver(key queryid, string data)
{
if(_queryid == queryid)
{
// 最大行数を受け取った時の処理
integer i = 0;
_max = (integer)data;
for( i = 0; i < _max; i++)
{
llGetNotecardLine(user,i);
}
_queryid = NULL_KEY;
}else{
// ユーザー情報を受け取った時の処理
member += [data];
_cnt++;
if(_cnt == _max){
state kadou;
}
}
}
}
state kadou
{
state_entry()
{
llSetText("",<1.0,0.0,0.0>,1.0);
}
touch_start(integer total_number)
{
if(flg == TRUE){
// メンバーを追加する処理
llSay(0, (string)llDetectedKey(0));
}
}
changed(integer change)
{
if(change & CHANGED_INVENTORY){
integer i;
integer ii;
integer flag = FALSE;
list note= [];
// 追加されたノートの一覧を作成
for(i=0;istring name = llGetInventoryName(INVENTORY_NOTECARD,i);
if(name != user){
note += [name];
}
}
// 名前の取得→配布→削除
for(i=0;istring name = llList2String(note,i);
for(ii=0;iiflag = TRUE;
llGiveInventory(llList2Key(member,ii),name);
}
llRemoveInventory(name);
}
if(flag == TRUE){
llSay(0,"登録されているユーザーに、ノートカードを送りました。");
}
// ユーザー情報更新
state default;
}
}
}
■users ノートカードの内容
9f287d45-a32b-450d-ac09-2267d70f26d3
39ccdd86-ec56-4166-a73f-0a10bfc49dd6
760720f6-12e1-4698-bed5-5e533358e9b0
Posted by DK003 at 15:32│Comments(3)
│作ってみた
この記事へのトラックバック
DKさんの一連の記事と昨日の話からなにやら書いてみました。※ベースは、DKさんのものです。とりあえず、形になってきたのでここに載せておきます。 通常、この状態になってから、...
LSL:何かを送る【つくってだらだら】at 2009年08月13日 11:07
この記事へのコメント
こんにちわ^^
ヾ(* 'Д' )ノオハツデス♪
ソラマメぶらぶら見てて発見しました。
ちょーど同じようなスクリプトを立てていたのでふむふむ。と思いながら拝見させていただきました。
だいぶ使い方も違うのですが、
おぶじぇくとにタッチした人のキーをリストへ上げて、
オーナーがタッチした人たちへノートを配布できるものです。
もう完成はしていますが・・
問題はリストにどれくらいのアバターの名前を保持できるか・・・でした(;´д⊂)
テストするにしても大量のアバターが必要だったりするので、うーんという状態でした。
一つDK003さんのスクリみててふと思ったのですが。。
なぜノート更新してもChangeが処理されないんですかね・・
そしたらタッチでリスト更新する必要ないのにー・・とひそかに思いましたが・・
オブジェクト内のノートを更新するだけでも
Change処理できるようになってほしいと思ってました><w
長文で意味もないことを失礼しました(;´д⊂)
ヾ(* 'Д' )ノオハツデス♪
ソラマメぶらぶら見てて発見しました。
ちょーど同じようなスクリプトを立てていたのでふむふむ。と思いながら拝見させていただきました。
だいぶ使い方も違うのですが、
おぶじぇくとにタッチした人のキーをリストへ上げて、
オーナーがタッチした人たちへノートを配布できるものです。
もう完成はしていますが・・
問題はリストにどれくらいのアバターの名前を保持できるか・・・でした(;´д⊂)
テストするにしても大量のアバターが必要だったりするので、うーんという状態でした。
一つDK003さんのスクリみててふと思ったのですが。。
なぜノート更新してもChangeが処理されないんですかね・・
そしたらタッチでリスト更新する必要ないのにー・・とひそかに思いましたが・・
オブジェクト内のノートを更新するだけでも
Change処理できるようになってほしいと思ってました><w
長文で意味もないことを失礼しました(;´д⊂)
Posted by あまてらす at 2009年08月12日 14:45
ちょっと自分のところに投稿してみました(トラックバックしておきました)。
また、お暇な時にチェックしてみてください。
また、お暇な時にチェックしてみてください。
Posted by you Xiao at 2009年08月13日 11:09
■youさん
すいません、これは参考になります。
熟読しますw
■あまてらすさん
単純に私の甘えですw
勉強になります。
こうやってスクリプト載せると、みなさん
色々おしえてくれたり、まだまだ成長できるんだなと感動しました。
本当にありがとう!
すいません、これは参考になります。
熟読しますw
■あまてらすさん
単純に私の甘えですw
勉強になります。
こうやってスクリプト載せると、みなさん
色々おしえてくれたり、まだまだ成長できるんだなと感動しました。
本当にありがとう!
Posted by DK003 at 2009年08月17日 08:55