2009年02月11日
マメタ販売機がやってきた!

当店のランディングポイントからすぐの場所に、マメタ販売機がやってきました…!
早速設置を確認。
これ、たった4プリムで出来てるんですよ。
ほんのわずかにグロウが掛かってるんでしょうか。
うちは建物の改装をする可能性があるんで、屋外に設置してもらいましたけど、店内においても邪魔にならない大きさとデザインですね。

ランディングポイントからはこんな風に見えます。
exchangeも便利なんですが、日本語で買い物が出来るのは、英語が苦手な自分としてはとってもありがたいです。
なので、ちょっとでもこうした国内の販売サイトが、活発になってくれたら嬉しいなぁ…なんて思います。
2008年12月24日
(緊急)じゃぱらんどが消滅

ブログを何気なく見ていましたらビックリしました。
いま、じゃぱらんどのSIMが消滅していっているようです。
住民の方には何の告知も無かったようで、気づかずにオブジェクトなどがSIM消滅に巻き込まれたという被害もあるらしく、大きな騒ぎになっている様子…あわあわ、本当に大変です;;
今年はじめ、インベントリ消失バグに巻き込まれて、大分アイテムをなくしてショックだったんですが、土地ごと全部となったらきっともっとショックですよね…><
SIMが消滅すると、置いてあるオブジェクトも全て消滅して、リターンはされないようです。
色々なブログ、コミュニティで、住民の方々に一国も早くアイテムのテイクをと呼びかけているようでした。
私も何度か遊びに行ったことがあるSIMだったので、本当に今回の件は記事を見てびっくりでした。
もしかしたら、じゃぱらんどに土地を持っている方がここを見ているかも知れないので、他ブログなどの記事を見て判ったことを箇条書きにしておきます。
・じゃぱらんどSIMの契約は切れていて、消滅が決定している(リンデン情報)
・オフラインになったSIMは1週間ほどで完全に消滅する
・オフラインのSIMは、リンデンに申請すれば(住民のみ)アイテムのテイクのために立ち入れるらしい
・消滅したSIMとオブジェクトは復活不可能
こちらのブログに今後の動向などの詳細が書かれていました
↓「早稲田SIM Blog」 じゃぱらんど消滅・今後の停止予定(重要)
http://waseda.slmame.com/e471063.html
今回の事態にあたって、MagSLで土地1ヶ月無料という救済プランが設けられているようです。
↓「MagSL」 じゃぱらんど救済プラン詳細
http://magsl.net/archives/2008/12/23141139.php
今回の件にまだ気づいていない当事者の方々に、少しでも早く情報が伝わればと思います。
この記事のトップで使用した画像はお持ち帰り&転載OKですので、もし同じように情報を記事にしたい方がいましたら、使って下さいませ。
2008年12月06日
オブジェクトをRezした時のイベント
on_rezしたオブジェクトを消す仕組みを考えていたら、object_rezっていう便利なイベントを発見しました。
このイベント、すごく便利です。
object_rez(key rez_id){
}
key rez_idにはrezしたオブジェクトのUUIDが入ります。
つまり、自分が何をrezしたのかを記憶することが可能なんですね。(当たり前のことですみません>< 今までこのイベントの存在すら気づいてませんでした;)
そんなわけで、こんな風にしてみました。
===== 本体のスクリプト =====
object_rez(key rez_id){
llWhisper(ch_del,(string)rez_old_id);//削除命令
rez_old_id = rez_id;
}
===== Rezされる方のスクリプト =====
on_rez(integer rez){
handle = llListen(ch_del,"","",(string)llGetKey());
}
listen(integer channel, string name, key id, string message){
if(message==(sgring)llGetKey()){ //一応受信メッセージをチェック
llDie();
}
}
これで、新しくrezした時に元々rezされていたオブジェクトを確実に削除できるようになりました。
上記だとRezしてから古いオブジェクトを削除していますので、もし削除してからRezしたい場合はllRezObject~の前に削除命令を出してあげればOKです^^
イベントって色々と便利だなぁと日々思いつつ、今欲しいのはchangeイベント中で「名前」や「説明」が変わったときの判定です^^; インベントリの中身が変わったのは判定できるのに、どうして名前とかの変化には対応しないんでしょう~。
あと、listenイベント内でDetectとか使えると便利だなーと感じるのは、私だけでしょうか;(llGetObjectDetailsを使うのがいちいち面倒なので、Detectで簡単に調べられるといいなぁ、とか)
ただいま全力でCSR準備中です~っ。
ずっとSet busyですみません>< あとちょっと・・・!
このイベント、すごく便利です。
object_rez(key rez_id){
}
key rez_idにはrezしたオブジェクトのUUIDが入ります。
つまり、自分が何をrezしたのかを記憶することが可能なんですね。(当たり前のことですみません>< 今までこのイベントの存在すら気づいてませんでした;)
そんなわけで、こんな風にしてみました。
===== 本体のスクリプト =====
object_rez(key rez_id){
llWhisper(ch_del,(string)rez_old_id);//削除命令
rez_old_id = rez_id;
}
===== Rezされる方のスクリプト =====
on_rez(integer rez){
handle = llListen(ch_del,"","",(string)llGetKey());
}
listen(integer channel, string name, key id, string message){
if(message==(sgring)llGetKey()){ //一応受信メッセージをチェック
llDie();
}
}
これで、新しくrezした時に元々rezされていたオブジェクトを確実に削除できるようになりました。
上記だとRezしてから古いオブジェクトを削除していますので、もし削除してからRezしたい場合はllRezObject~の前に削除命令を出してあげればOKです^^
イベントって色々と便利だなぁと日々思いつつ、今欲しいのはchangeイベント中で「名前」や「説明」が変わったときの判定です^^; インベントリの中身が変わったのは判定できるのに、どうして名前とかの変化には対応しないんでしょう~。
あと、listenイベント内でDetectとか使えると便利だなーと感じるのは、私だけでしょうか;(llGetObjectDetailsを使うのがいちいち面倒なので、Detectで簡単に調べられるといいなぁ、とか)
ただいま全力でCSR準備中です~っ。
ずっとSet busyですみません>< あとちょっと・・・!
タグ :Feather
2008年11月15日
お茶にはケーキを

いつも利用している紅茶屋さん(RL)からメールが来てました。
クリスマス茶会があるらしいのですが・・・と、遠いっ!<開催地が(涙)
アレンジ別の茶葉の選び方とか講座もあるみたいなので、興味深々なのですが、日頃からなかなか余暇が取れずにいる自分にははかない夢でしょうか><
しくしくと泣き咽びつつ、新しいアイテム作りに思いをぶつけてみました。
・・・紅茶の話をしたのに、何故か作っているのはイチゴケーキです。
とりあえず、↑みたいな感じで1プリム。
ホールで飾って食べられそうなクリスマスケーキを目指して奮闘中です~。
2008年11月12日
ログインエラーに涙

突然ログインが出来なくなってオロオロしています~><
今日の昼までは普通にインできてたんですけど・・・。
夕方からずっと、「The system is logging you out right now.~」とかエラーが出て、どれだけ待って再ログインを試みても、ログインが出来なくなってしまいました;;;
あわあわ、色々と用事があるのに、インできなくて困っています><
何度かこういうエラーがあったときは、しばらく時間を待てばログインできるようになったんですけど、もう数時間この状態・・・も、もしこのままログインできなくなっちゃったらどうしましょう(青褪め)
英語サポートにつたない英文でヘルプを発信してみましたが、果たしてどうなることやら・・・。
ひたすら解決策を探しております~っ。
2008年08月28日
SLXで今更ですが・・・

SL-Exchangeに商品を登録している際、ふと気づいたことがありました。
も、もしかして「×1箱1商品のみ」ではなく、「○1箱複数商品可能」なのでしょうか・・・!?(どきどき
今更という感じの初歩的な疑問ですみません><
いまのいままで、1つの箱には1つの商品しか登録できないんだと思い込んでおりました;;
そんなわけで、スカイボックスを埋め尽くしていたMagic boxの山がすっきりさっぱりです。
あわあわ、これ以上置けないどうしようとか真剣に悩んでいました~。
メタコマースのベンダーが1箱に複数の商品を登録できるタイプで、Exchangeもそんなのだったらいいのになぁとかこっそり思っていました。勘違い爆発ですみませんですSXLさんっ><
英語の説明ページも一度は目を通したんですけど、意味がわからないところが多々あるので、本気で英語の勉強した方がいいのかしら・・・と考え中です。
2008年08月04日
グロウ初体験とダンスパーティ

昨日、文京区のイベントで、初めてグロウに挑戦して来ました。
実はサウンドカードが刺さっていないマシンなので、音が聞こえないのが残念だったんですが…><
でも、きれいなグロウがかかっているドレスで踊っている方なんかも居て、改めてグロウの凄さを実感。
ならぱと、光らせられそうな素材のドレスを、一部ぴかぴかさせて見ました。
天使の羽は薄い色だとどうしてもちらついていたのが、グロウだとそういう事もまったく無くてきれいです。
どんどん新しい技術が入ってきて、追いつくのが大変ですが、工夫するのが楽しいそんな毎日です。
2008年07月29日
メタバーズでお買い物と土地探し

表参道の「プティマルシェ」に行ってきました。
可愛いアクセサリが並んでいて、ついつい衝動買いです^^
そして歩いているうちにとっても好みの水辺を発見しまして、記念撮影してきました。
以前からメタバースにも店舗を置ければなぁ・・・と思っていたんですが、思い立ってもう半年以上^^; なかなか「紹介制」という壁に阻まれて実現には至っていません~。
できれば住みたいなーと思う場所はどこも紹介が必要なんですよね。
こう、半年以上ウロウロしながら何度かアタックするものの、なかなかお知り合いとまではいかずにちょっと挫折気味です><
一番の原因はものづくりが好きすぎてSLのほとんどの時間を制作にあててしまっているせいなんですが・・・;;
うーん、何度見ても素敵な風景です(↑ssは表参道の角地)
住宅展示場も良く見に行くんですが、こっそりとお気に入りのデザインの建物があるので、いつか土地を借りられたらこういうお店を建てられたらいいなぁと思いながら、ウロウロと今日もお買い物だけして帰宅しました~^^;
2008年05月22日
LSLで日付の計算、日付の取得
こんにちは。
LSLのエディターで日本語がそのまま書き込めるということをつい先ほど知って、衝撃を受けている朔夜です。(情報に気づくの遅すぎですね;)
コードで変換する必要が無くなってたんですね~。日本語コメント打ち込むと、画面では□□□と出るので、日本語は使えないのだと思っていました。
・・・と、最初から馬鹿なことをやっておりますが^^;
色んな計算をしているうちに、ふと「LSLで日付や期限の計算ってどうするのかな?」と考えまして、実際に時間を計測しようと思ってみたんですけど・・・意外に関数が見つからなくて難航しました。(DateSirialとかBetweenとかDateDiffのような関数があると単純に考えていました;)
Second Life Wikiさんの「Date Library」にどうやら色々と書いてある様子というところまで突き止めて、けれど全て英語・・・!(英語は超苦手科目;)
片言翻訳しながら、以下、実験をした結果です~。
****↓のコードは、Date Library(http://wiki.secondlife.com/wiki/Date_Library)で公開されている内容です****
//日付yy/mm/ddから、日付の値(シリアル値と似たようなものだと思うので、以下シリアル値と表記)「g」を計算する。
integer gday(integer yy, integer mm, integer dd)
{
integer m = (mm + 9)%12; // mar=0, feb=11
integer y = yy - 1600 - m/10; // if Jan/Feb, year--
return y*365 + y/4 - y/100 + y/400 + (m*306 + 5)/10 + (dd - 1);
}
//本日の日付を取得する。
integer today()
{
string DateUTC = llGetDate();
integer year = (integer)llGetSubString(DateUTC, 0, 3);
integer month = (integer)llGetSubString(DateUTC, 5, 6);
integer day = (integer)llGetSubString(DateUTC, 8, 9);
return gday(year,month,day);//戻り値はgday関数を通して、シリアル値になる。
}
//シリアル値「d」の引数から、[ year, month, day]をリスト型で返す。
list sdate(integer d)
{
integer y = (10000*d + 14780)/3652425;
integer ddd = d - (y*365 + y/4 - y/100 + y/400);
if (ddd < 0) {
y--;
ddd = d - (y*365 + y/4 - y/100 + y/400);
}
integer mi = (52 + 100*ddd)/3060;
integer dd = ddd - (mi*306 + 5)/10 + 1;
return [
1600 + y + (mi + 2)/12,
(mi + 2)%12 + 1,
dd];
}
************************************************
日付、日数の計算を行うためには、まずは上記のようなユーザー関数をあらかじめ入れておく必要があるみたいです。
↓こんな例題も書かれていました。
************************************************
//二つの日付間の差をシリアル値で求める。
gday(y2,m2,d2) - gday(y1,m1,d1);
//n日後の日付を[ year, month, day]のリストで返す。
sdate(gday(y,m,d) + n)
************************************************
これでとりあえず日付は取得・計算できるみたいです~。
でも日本の場合は時差がありますから、そのあたりを計算に入れていかないといけませんよね。
そうすると、integer today() の中にある string DateUTC = llGetDate() の時点で、ちょっと手を加える必要が出てくるでしょうか・・・。
Second Life Wiki によりますと、
integer gIntDay = 86400; //-- 1 day in seconds
・・・ということで、1日の秒数は 86400 秒らしいです。
integer time = (integer)llGetGMTclock(); //現在の時間を取得(0時からの秒数)
integer JP_TIME = 9*3600; //時差(9時間分の秒数)
integer gIntDay = 86400; //1日の秒数
//時差を足して、秒数が1日を越えているかを判定
if(time+JP_TIME>gIntDay){
day = dai + 1;//日付が翌日になる
}
こんな計算をすると、日本時間の日付になるでしょうか。
まとめてみます~。
******************************************
//本日の日付を取得する。
integer today()
{
string DateUTC = llGetDate();
integer year = (integer)llGetSubString(DateUTC, 0, 3);
integer month = (integer)llGetSubString(DateUTC, 5, 6);
integer day = (integer)llGetSubString(DateUTC, 8, 9);
integer time = (integer)llGetGMTclock(); //現在の時間を取得(0時からの秒数)
integer jp_time = time + 9*3600; //時差(9時間分の秒数)
integer gIntDay = 86400; //1日の秒数
//時差を足して、秒数が1日を越えているかを判定
if(jp_time>gIntDay){
day = dai + 1;//日付が翌日になる
}
return gday(year,month,day);//戻り値はgday関数を通して、シリアル値になる。
}
******************************************
ううん、これで良いのでしょうか・・・。
もっと効率の良い方法がありましたら、誰か教えて下さい~っ;;
おまけ。
//今日の残り時間を計算(日本時間Ver)
string time(){
integer gIntDay = 86400; //1日の秒数
integer now = llGetGMTclock() + 9*3600;//現在時間
integer sec = gIntDay-now;//今日の残り時間(秒)
//secを時間文字列に変換
integer h = llFloor(sec/3600);//時間
sec = sec-h*3600;
integer m = llFloor(sec/60);//分
integer s = llFloor(sec%60);//秒
string time = "今日はあと" + (string)h + "時間" + (string)m + "分" + (string)s + "秒です。";
return(time);
}
↑の二つは、実働実験してないので、間違ってたらごめんなさい><
LSLのエディターで日本語がそのまま書き込めるということをつい先ほど知って、衝撃を受けている朔夜です。(情報に気づくの遅すぎですね;)
コードで変換する必要が無くなってたんですね~。日本語コメント打ち込むと、画面では□□□と出るので、日本語は使えないのだと思っていました。
・・・と、最初から馬鹿なことをやっておりますが^^;
色んな計算をしているうちに、ふと「LSLで日付や期限の計算ってどうするのかな?」と考えまして、実際に時間を計測しようと思ってみたんですけど・・・意外に関数が見つからなくて難航しました。(DateSirialとかBetweenとかDateDiffのような関数があると単純に考えていました;)
Second Life Wikiさんの「Date Library」にどうやら色々と書いてある様子というところまで突き止めて、けれど全て英語・・・!(英語は超苦手科目;)
片言翻訳しながら、以下、実験をした結果です~。
****↓のコードは、Date Library(http://wiki.secondlife.com/wiki/Date_Library)で公開されている内容です****
//日付yy/mm/ddから、日付の値(シリアル値と似たようなものだと思うので、以下シリアル値と表記)「g」を計算する。
integer gday(integer yy, integer mm, integer dd)
{
integer m = (mm + 9)%12; // mar=0, feb=11
integer y = yy - 1600 - m/10; // if Jan/Feb, year--
return y*365 + y/4 - y/100 + y/400 + (m*306 + 5)/10 + (dd - 1);
}
//本日の日付を取得する。
integer today()
{
string DateUTC = llGetDate();
integer year = (integer)llGetSubString(DateUTC, 0, 3);
integer month = (integer)llGetSubString(DateUTC, 5, 6);
integer day = (integer)llGetSubString(DateUTC, 8, 9);
return gday(year,month,day);//戻り値はgday関数を通して、シリアル値になる。
}
//シリアル値「d」の引数から、[ year, month, day]をリスト型で返す。
list sdate(integer d)
{
integer y = (10000*d + 14780)/3652425;
integer ddd = d - (y*365 + y/4 - y/100 + y/400);
if (ddd < 0) {
y--;
ddd = d - (y*365 + y/4 - y/100 + y/400);
}
integer mi = (52 + 100*ddd)/3060;
integer dd = ddd - (mi*306 + 5)/10 + 1;
return [
1600 + y + (mi + 2)/12,
(mi + 2)%12 + 1,
dd];
}
************************************************
日付、日数の計算を行うためには、まずは上記のようなユーザー関数をあらかじめ入れておく必要があるみたいです。
↓こんな例題も書かれていました。
************************************************
//二つの日付間の差をシリアル値で求める。
gday(y2,m2,d2) - gday(y1,m1,d1);
//n日後の日付を[ year, month, day]のリストで返す。
sdate(gday(y,m,d) + n)
************************************************
これでとりあえず日付は取得・計算できるみたいです~。
でも日本の場合は時差がありますから、そのあたりを計算に入れていかないといけませんよね。
そうすると、integer today() の中にある string DateUTC = llGetDate() の時点で、ちょっと手を加える必要が出てくるでしょうか・・・。
Second Life Wiki によりますと、
integer gIntDay = 86400; //-- 1 day in seconds
・・・ということで、1日の秒数は 86400 秒らしいです。
integer time = (integer)llGetGMTclock(); //現在の時間を取得(0時からの秒数)
integer JP_TIME = 9*3600; //時差(9時間分の秒数)
integer gIntDay = 86400; //1日の秒数
//時差を足して、秒数が1日を越えているかを判定
if(time+JP_TIME>gIntDay){
day = dai + 1;//日付が翌日になる
}
こんな計算をすると、日本時間の日付になるでしょうか。
まとめてみます~。
******************************************
//本日の日付を取得する。
integer today()
{
string DateUTC = llGetDate();
integer year = (integer)llGetSubString(DateUTC, 0, 3);
integer month = (integer)llGetSubString(DateUTC, 5, 6);
integer day = (integer)llGetSubString(DateUTC, 8, 9);
integer time = (integer)llGetGMTclock(); //現在の時間を取得(0時からの秒数)
integer jp_time = time + 9*3600; //時差(9時間分の秒数)
integer gIntDay = 86400; //1日の秒数
//時差を足して、秒数が1日を越えているかを判定
if(jp_time>gIntDay){
day = dai + 1;//日付が翌日になる
}
return gday(year,month,day);//戻り値はgday関数を通して、シリアル値になる。
}
******************************************
ううん、これで良いのでしょうか・・・。
もっと効率の良い方法がありましたら、誰か教えて下さい~っ;;
おまけ。
//今日の残り時間を計算(日本時間Ver)
string time(){
integer gIntDay = 86400; //1日の秒数
integer now = llGetGMTclock() + 9*3600;//現在時間
integer sec = gIntDay-now;//今日の残り時間(秒)
//secを時間文字列に変換
integer h = llFloor(sec/3600);//時間
sec = sec-h*3600;
integer m = llFloor(sec/60);//分
integer s = llFloor(sec%60);//秒
string time = "今日はあと" + (string)h + "時間" + (string)m + "分" + (string)s + "秒です。";
return(time);
}
↑の二つは、実働実験してないので、間違ってたらごめんなさい><
2008年04月05日
こんな日に・・・!
どうにも調子が悪いなぁ~と思ってましたら、突然OFFLINEになりました(涙)
ああああ、こんな日に限って・・・!(約束があったのに)
ブラウザが新しくなったみたいですけど、その影響だったりするのでしょうか><;
ううう、早く復活して欲しいです。
INできないと連絡も出来ません;;;(ご め ん な さ い~っ)
ああああ、こんな日に限って・・・!(約束があったのに)
ブラウザが新しくなったみたいですけど、その影響だったりするのでしょうか><;
ううう、早く復活して欲しいです。
INできないと連絡も出来ません;;;(ご め ん な さ い~っ)