ソラマメブログ
< 2024年11月 >
S M T W T F S
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

2009年08月10日

ポストを作りたい その2

■はじめに
まじめにスクリプトを読んでくれる人が居るとは思わなかったので、
レスついたらアップしようと思ってたスクリプトをあげます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;i string name = llGetInventoryName(INVENTORY_NOTECARD,i);
if(name != user){
note += [name];
}
}
// 名前の取得→配布→削除
for(i=0;i string name = llList2String(note,i);
for(ii=0;ii flag = 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



同じカテゴリー(作ってみた)の記事画像
土地音楽の変更ツール
オセロの販売開始!デザインは6種類
近況報告
web連動(SL x PHP x MySQL)その②
web連動(SL x PHP x MySQL)その①
同じカテゴリー(作ってみた)の記事
 ポストを作りたい (2009-08-07 11:52)
 土地音楽の変更ツール (2009-05-07 14:47)
 オセロの販売開始!デザインは6種類 (2009-04-28 16:52)
 llKey2Name + 仕様を読まない人 = バグる (2009-04-15 17:06)
 トレハンスクリプトを作った (2009-04-12 06:11)
 llHTTPRequest関連メモ2 (2009-04-10 17:17)
この記事へのトラックバック
DKさんの一連の記事と昨日の話からなにやら書いてみました。※ベースは、DKさんのものです。とりあえず、形になってきたのでここに載せておきます。  通常、この状態になってから、...
LSL:何かを送る【つくってだらだら】at 2009年08月13日 11:07
この記事へのコメント
こんにちわ^^
ヾ(* 'Д' )ノオハツデス♪
ソラマメぶらぶら見てて発見しました。

ちょーど同じようなスクリプトを立てていたのでふむふむ。と思いながら拝見させていただきました。

だいぶ使い方も違うのですが、
おぶじぇくとにタッチした人のキーをリストへ上げて、
オーナーがタッチした人たちへノートを配布できるものです。
もう完成はしていますが・・
問題はリストにどれくらいのアバターの名前を保持できるか・・・でした(;´д⊂)
テストするにしても大量のアバターが必要だったりするので、うーんという状態でした。

一つDK003さんのスクリみててふと思ったのですが。。
なぜノート更新してもChangeが処理されないんですかね・・
そしたらタッチでリスト更新する必要ないのにー・・とひそかに思いましたが・・
オブジェクト内のノートを更新するだけでも
Change処理できるようになってほしいと思ってました><w

長文で意味もないことを失礼しました(;´д⊂)
Posted by あまてらすあまてらす at 2009年08月12日 14:45
ちょっと自分のところに投稿してみました(トラックバックしておきました)。
また、お暇な時にチェックしてみてください。
Posted by you Xiaoyou Xiao at 2009年08月13日 11:09
■youさん
すいません、これは参考になります。
熟読しますw

■あまてらすさん
単純に私の甘えですw
勉強になります。

こうやってスクリプト載せると、みなさん
色々おしえてくれたり、まだまだ成長できるんだなと感動しました。
本当にありがとう!
Posted by DK003 at 2009年08月17日 08:55
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。