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
2009年08月07日
ポストを作りたい
■概要
オブジェクトにノートカードを入れたら(オブジェクトにノートカードをドラッグ)、
指定のユーザー全員にノートカードを送るスクリプトです。
オブジェクト側の設定として、MOD可のグループに謙譲にする必要があるかもしれません。
このあたりはあまり検証していません。
また、スクリプト中に名前の登録もしていますが、使っていないので
誰のUUIDか確認する程度ということでw
■スクリプト
list member = [
"9f287d45-a32b-450d-ac09-2267d70f26d3","DK003 Doobie"
// 以下にメンバーを追加してください(タッチした時の情報をコピペ)
];
// タッチした時に情報を表示する時はTRUEを設定、しないときはFALSE
integer flg = TRUE;
default
{
touch_start(integer total_number)
{
if(flg == TRUE){
// メンバー情報を取得する処理
key user = llDetectedKey(0);
llSay(0, ",\""+(string)user+"\",\""+llKey2Name(user)+"\"");
//member += [user,llKey2Name(user)];
}
}
changed(integer change)
{
if(change & CHANGED_INVENTORY){
integer i;
integer ii;
integer max = llGetInventoryNumber(INVENTORY_NOTECARD );
integer maxmax = llGetListLength(member)/2;
for(i=0;ifor(ii=0;ii llGiveInventory(llList2Key(member,ii*2),llGetInventoryName(INVENTORY_NOTECARD,i));
}
}
for(i=0;illRemoveInventory(llGetInventoryName(INVENTORY_NOTECARD,i));
}
llSay(0,"登録されているユーザーに、ノートカードを送りました。");
}
}
}
2009年05月07日
土地音楽の変更ツール

フルパーでフリービーな土地音楽を変更できるツールを
メタコマースに出品しましたw(土地音楽の変更ツールの出品先)
これはノートカードに書いたアバターの人なら誰でも土地音楽を変更できるようにしたツールです
そーいうものを作りたい人は、スクリプトの参考にでもどうぞw
また、私の店でも0L$で販売していますので、よかったらみにきてくだせ~(私のお店)
===================================
█ 特徴
====================================
土地オーナー以外の人でも、ノートカードに名前を追加することで土地音楽を変更できるようにするオブジェクトです。
※オブジェクトの設置は、土地音楽の変更権利を持っている方のみでお願いします。
====================================
█ 使い方
====================================
1.ノートカードに土地音楽を変更したいアバターの名前を書く
2.オブジェクトをタッチする
3.音楽のURLをオブジェクトの近くで話す
4.土地音楽が変更されていることを確認する
2009年04月28日
オセロの販売開始!デザインは6種類

やっとこさオセロをメタコマースで販売することにしましたw
いちお低プリム(6prim)のオセロなのでお時間のある方は
お友達をつれてお店に見に来て下せ~
■オセロ(Reversi)の三つの特徴
・少プリム
オセロなのに6Primと少プリムなのでカフェ等にもおけます!
・戦績が残る
SIM別の戦績やランキング情報を残すことができます!
・豊富なデザイン
オセロとは思えないw沢山のデザインがあります!
■オセロ(Reversi)の遊び方
1.支払いで1L$を払うことでゲームに参加
2.2人参加した状態でスタートボタンを押すとゲームが始まります!
※支払いで頂いたL$はクリエイター(DK003 Doobie)に送られます。
このL$は、今後イベントやオセロを遊んで頂いた方への特典として使います。
■メタコマース
http://shop.slmame.com/mtc/blogger/?action=article&gc=200904286925&sid=slmame.com
■XStreet
https://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1422617
■販売店舗www
http://slurl.com/secondlife/trenza/202/197/0
2009年04月15日
llKey2Name + 仕様を読まない人 = バグる
ええ、ちょっと感想みたいな かんじですが
llKey2Nameでオフラインの人の名前取得しようとして取得できなくて
んだ、どーなってんだ、リンデンまたいかれたか、などと思って
正常にllKey2Nameが動く日が来るのをまっていました・・・
まてどくらせど ぜんぜんFIXされないので 業を煮やして「llKey2Name 不具合」でググったら、
オフラインの人の名前は取得できないのが仕様だと書いてました・・・
リンデンさん・・・なんか・・・すいません・・・
llKey2Nameなんて名前返すだけの関数だとおもってなめてました。
いやほんとすいません・・・
ついでに、じぇにーさんもすいません・・・・
ちゃんと仕様が読める人間になりたいと思いました。
llKey2Nameでオフラインの人の名前取得しようとして取得できなくて
んだ、どーなってんだ、リンデンまたいかれたか、などと思って
正常にllKey2Nameが動く日が来るのをまっていました・・・
まてどくらせど ぜんぜんFIXされないので 業を煮やして「llKey2Name 不具合」でググったら、
オフラインの人の名前は取得できないのが仕様だと書いてました・・・
リンデンさん・・・なんか・・・すいません・・・
llKey2Nameなんて名前返すだけの関数だとおもってなめてました。
いやほんとすいません・・・
ついでに、じぇにーさんもすいません・・・・
ちゃんと仕様が読める人間になりたいと思いました。
2009年04月12日
トレハンスクリプトを作った
トレハン用のスクリプトを作りました、はじめてのことでいろいろ戸惑ったw
ということで時系列に何をしたかメモ
・DBの設計(冗長気味に)
・ベンダー作成(SL&php)
・宝箱作成(SL&php)
・ガチャガチャ作成(SL&php)
どんなものかは、下のブログ参考にしてくだせー
http://petzmarket.slmame.com/e584745.html
http://dogcafe.slmame.com/e585961.html
http://turbo.slmame.com/e584892.html
●開発の所感
・データをどこ(ノート、DB、SLのメモリ)に置くか、もう少し検討したほうがよかった
・処理をどこ(SL、PHP、SQL)に書くか検討し、1つの処理で二回もHTTPRequestを書かないように
・HTTPRequestはurlとquery部分を1つの関数にまとめて書いたほうが後で見やすい
・phpファイルの名前をもう少しましにw
・DBのテーブルやなんかの命名ルールを決めるべき
●よかったところ
・利用者の自由度を減らしてでも、利用者の使いやすいものを作るという考え方 (ワイルドさんの教えです^^)
・ほしい統計データはうまくとれたと思う(参加者のイベント動向などの数値)
●反省点
・要求分析のあまさ、小規模開発向けの設計書の書き方を知らない点
・コミュニケーション能力の低さ(すぐに、いらっとしてしまう)
ということで時系列に何をしたかメモ
・DBの設計(冗長気味に)
・ベンダー作成(SL&php)
・宝箱作成(SL&php)
・ガチャガチャ作成(SL&php)
どんなものかは、下のブログ参考にしてくだせー
http://petzmarket.slmame.com/e584745.html
http://dogcafe.slmame.com/e585961.html
http://turbo.slmame.com/e584892.html
●開発の所感
・データをどこ(ノート、DB、SLのメモリ)に置くか、もう少し検討したほうがよかった
・処理をどこ(SL、PHP、SQL)に書くか検討し、1つの処理で二回もHTTPRequestを書かないように
・HTTPRequestはurlとquery部分を1つの関数にまとめて書いたほうが後で見やすい
・phpファイルの名前をもう少しましにw
・DBのテーブルやなんかの命名ルールを決めるべき
●よかったところ
・利用者の自由度を減らしてでも、利用者の使いやすいものを作るという考え方 (ワイルドさんの教えです^^)
・ほしい統計データはうまくとれたと思う(参加者のイベント動向などの数値)
●反省点
・要求分析のあまさ、小規模開発向けの設計書の書き方を知らない点
・コミュニケーション能力の低さ(すぐに、いらっとしてしまう)
2009年04月10日
llHTTPRequest関連メモ2
HTTPRequestは、オブジェクト単位で20秒間に25回まで!
だ、そうです。オブジェクト単位ね!間違えないように!!
while文でHTTPRequestを何度も発生させちゃだめ!とか、
コリジョンでRequest飛ばすようにしたりとかするとすぐリミットくるよ!
http://wiki.secondlife.com/wiki/LlHTTPRequest/ja
だ、そうです。オブジェクト単位ね!間違えないように!!
while文でHTTPRequestを何度も発生させちゃだめ!とか、
コリジョンでRequest飛ばすようにしたりとかするとすぐリミットくるよ!
http://wiki.secondlife.com/wiki/LlHTTPRequest/ja
2009年04月09日
llHTTPRequest関連メモ
llEscapeURL( 文字列 );
という関数があって、ウェブサイトにアクセスする際にクエリ文字列を転送するとき
そのクエリ文字列に空白をいれたいならllEscapeURL()を使う。
●例:
この通りにクエリ文字を送れば t e s tと文字が送られるが、
llEscapeURLを使わなければ、testと文字が送られる。
という関数があって、ウェブサイトにアクセスする際にクエリ文字列を転送するとき
そのクエリ文字列に空白をいれたいならllEscapeURL()を使う。
●例:
この通りにクエリ文字を送れば t e s tと文字が送られるが、
llEscapeURLを使わなければ、testと文字が送られる。
string url = "http://test.com/test.php";
string query = "?test="+llEscapeURL("t e s t");
llHTTPRequest(url+query,[HTTP_METHOD,"POST"],"");
2009年03月25日
近況報告

最近、オセロ作ってます。
沢山のデザイナーの人とサウンドの人と協力して作っています。
協力していただいている方にはほんと感謝です、いい刺激になってます!
あたりまえですが、協力して一つのものを作るのって楽しいですね
そして、試遊台(データベースのテスト)を置かせていただいている土地オーナーの方や
実際に遊んでいただいている方々の協力で完成に向かってます
もちろん遊んでいただいた方の意見を取り入れてブラッシュアップしています。
ということで、自動パス機能つけましたw
2008年07月25日
web連動(SL x PHP x MySQL)その②
2.PHPを使ってMySQLからテーブルデータを取得しSLで表示する。

上図は、前回のWeb x SLの関係を表しています。
「くれやる」の関係で、わかりやすくていいですね。

上図は、目的のSL x Web(PHP) x DB(MySQL)の関係を表しています。
目的はセカンドライフとデータベースを連携したいだけなのですが、
現状の仕様では直接データベースを参照できないので、Webに手伝ってもらって連携する。
Webの中間管理職的なポジションは、現実世界でもつらいですね。
2-1.MySQLにデータベースを用意
これは説明が面倒くさいので、説明を割愛しますねw
知りたい人は、MySQLで検索して下さい。
とりあえずテーブルに、nameとtypeという列を作り二件だけデータ投入
下図はテーブルのイメージ
name | type
------------------
1 | abc
2 | test
2-2.PHPを使ってMySQLから行の取得表示
これも説明が面倒くさいので、ソース貼り付けで許して下さい。
要望が多ければ、ちゃんと説明します。
(たぶんみんな興味ないと思うw)

で、これを実行した結果が、したの画像

ちゃんといけてますね。
2-3.SLでPHPの内容を取得表示
で、前回の講義で使ったスクリプトのURLを今回のphpに書き換えて実行した結果は以下の通り。

うまくいきましたね。
よかった。
これで、完成
==================================================
このブログでは簡単な質問を受け付けていますので、
簡単そうな問題を抱えている人は、DK003 DoobieまでIMください。
(ブログのネタに飢えているので喜んで話を聞かせてもらいます。)
2008年07月24日
web連動(SL x PHP x MySQL)その①
かなり前に作ったSL--PHP--MySQLの連動スクリプトの内容を
久々に見たら内容を完全に忘れていたw
そこで、ブログもやってるんだし、おそるおそる思い出していく様子を
レポートしようとおもいます。
1.とりあえずWebサイトのデータをSLで表示できるようにする。

まずは自分のwebサイトにtest.htmlを作成しました。
内容はtestって書いてるだけです。(上の画像の通りの内容)

つぎにSLでこんなスクリプトを書きました。(上の画像の通りの内容)
※アドレスは私の個人的な場所なのであえて伏せさせてもらいました。

で、実行した結果は次の通りです。
いやー相変わらず、ここまでは簡単ですね。
リンデンさんありがとう、助かります。
ということで、その②に続く・・・
=================================================
ところでみんな、ブログにスクリプトを書く時は、どうやって書いてるんだろ。
たまに、すんげー見やすいやつとかありますよね。
私は、わかんないので画像を張ってます。
久々に見たら内容を完全に忘れていたw
そこで、ブログもやってるんだし、おそるおそる思い出していく様子を
レポートしようとおもいます。
1.とりあえずWebサイトのデータをSLで表示できるようにする。

まずは自分のwebサイトにtest.htmlを作成しました。
内容はtestって書いてるだけです。(上の画像の通りの内容)

つぎにSLでこんなスクリプトを書きました。(上の画像の通りの内容)
※アドレスは私の個人的な場所なのであえて伏せさせてもらいました。

で、実行した結果は次の通りです。
いやー相変わらず、ここまでは簡単ですね。
リンデンさんありがとう、助かります。
ということで、その②に続く・・・
=================================================
ところでみんな、ブログにスクリプトを書く時は、どうやって書いてるんだろ。
たまに、すんげー見やすいやつとかありますよね。
私は、わかんないので画像を張ってます。