2007年05月30日
小物一点売り出し、別名似非バーチャ●イド

ヘッドセットです。目を見られたくないという方にぴったりかもしれない。
チャットでタカタカ打ってる時に右側みたいにバーチャルキーボードが開きます。L$ 60.-
(よく考えたらキーボード打ってるアニメーションがそのままなので場所がおかしいっ。まずいっ)
2007年05月27日
さてここはどこでしょう。

この数日の作業は特注品の製作とお店で番してて来た人との世間話。
やっぱり出てくるROBOTECHネタ。
ジャイアントなロボットがあるか聞かれた。やっぱ無理かなー。間接の再現がまず無理だしなー。
Space Suitの箱からの取り出し方をレクチャーしたりと。
2007年05月26日
ショップ移転完了
新商品も追加しましたのでよろしくお願いいたします。

2007年05月25日
移転先を探してみる。
もらったところではこちらが有利な金額で譲ってもらえそうなのでちょっとクラリと。
近頃の土地の値段は若干下がっているし2560sq.mで買える土地自体はそれなりにあるんですが、
立地条件を考えるとまた難しい。一箇所適当なところがあったのですが、16sq.m.だけオーバーしててそれをどうにかしないと。
2007年05月23日
2007年05月23日
壁面どうするかね~マシネママシネマ

かなり古いスナップショットなんで実物は一度見てもらいたいのですが、うちの建物の三階部分を道から見ると「つまらん、じつにつまらん」っていう状態。コンクリート打ちっぱなし状態に近くて、「何か絵が欲しいのう」と。SFなイラストでも一品用意したいところである。
あとプロモーションムービーのひとつぐらい作って店内で流したいところなのですが頭の中で考えるのはともかく実際にMachinemaの撮影とかになるとどうしようかと。マシンは二台あるのでカメラ固定で踊らせる程度の撮影ならそれほど難しくはないのですが、カメラを動かしたいとかになるととたんにややこしい。
とりあえず板野サーカス用ミサイルランチャーと飛行状態でぐるぐる回避サーカスアニメーションのセットを適当にとって使えるところをVideoStudioで編集すればええかなとか。
板野サーカス用ミサイルランチャーってなんやねーんって。
(Phantomで物理でぐにゅぐにゅ曲がるミサイルを連発するような装置)。
ぐにゅぐにゅ曲がるミサイルをどう作るか考える。前方方向への速度はそのままでllGetVelで取得した速度ベクトルの上方向と左方向への力のベクトルをランダムに設定して、速度を正規化して適当に伸ばしてllLookAtに設定すればいいかなー。
追跡なんかは下手に考えない。ランダムでてけとーに作って見栄えのよいものが撮影できる程度に繰り返すモンテカルロ砲で(それモンテカルロ法、というか使い方を間違ってます)。
2007年05月21日
お隣様、お元気ですか。
/irkutsk/29/172/0/
お隣様からIMが来まして、「うちの店舗を拡張したいので土地を売ってくれないか」とのこと。
確かに公園風(Money Treeもあります)にアレンジしてますが、Prim数が欲しいから買ったので現状そのまま売るわけにもいかず。移転するのは悪くないかもだが、土地の購入値段13999+15000+2522=L$31521出してくれるんだろうか。
2007年05月18日
肩のせランチャー 撃てぇーーーー

声は入ってませんが発射音は入ってます。
即席で作った効果音なんで変ッチャ変ですが。
両肩に乗せるランチャー販売開始。画像のとおりL$200。
一応武器扱いでPUSHはありませんが実弾モード時はダメージ入ります。要注意。
そもそもこれでコンバットSIMいくもんでもありませんが。
2007年05月16日
もーあちこちからお呼びがかかって、困っちゃう。
ただし、ここでお知らせ。一部パーツが「Mod不可」になっております。
灰色のままなら問題ありませんが、スーツカラーを変更したい場合は再度Getしてください。
もちろんL$0据え置き。
2.その宇宙服一式に写真には写っていない「ヘルメット+背中の姿勢制御装置」が入っております。
これはある方から「すでに作ったものがあるので無料でいいので同梱してくれないか?」という申し出があり、承諾したものです。
また、店舗限定としておりましたが、近いうちに別のところでも頒布開始する予定です。上で書いたヘルメットの製作者がかかわっているSFテーマのSIMでも配布したいということで調整中です。
3.隣人が「スターゲイト」ファンで関連アイテムを見つけては「こんなのGetしたよー」ってな感じで報告してくれます。TSUTAYAいってレンタルしてくるー(泣き笑い。
2007年05月15日
えっとね、実はね、Money Treeを……
寄付歓迎。
ちょこちょこ入金はしていきますのでアカウント作成一ヶ月未満の新人さんいらっしゃーい。
2007年05月15日
あばたー第四弾
三体目作ったら四体目も(またかいな)、ってことで、
次のDeskTopTroopersブランドアーマーアバターのネタを練ってます。
えいやっとばかりにベタ(熱帯魚にあらず)ですが、
「ヘルメットの防護シールドが降りて胸が開いて波動砲(仮名)を発射」
てのをつくってみようかと。実際に噴出するのはパーティクルでお茶を濁す。
どうせ武器扱いにしてもモーション凝りすぎるので意味ないし。
「発射前3段階+直前の溜+発射+発射してあーすっきりした(ぉぃ)」の6段階。
胸部ROOTスクリプト。メインルーチンで発射モーションの状態遷移を管理。一応HUD対応できるようなllListen周りにチューニングしておく(ここらへんはまた後で話を書くかも)。
/115 open ヘルメット防護シールド上げ
/115 close ヘルメット防護シールド下げ
/115 fire 発射
integer statecount;
float statetime;
float statespeed;
float TIMERDUR = 0.1;
float RINGDUR = 0.8;
integer CHANNEL = 115;
float STATESPEED = 1.0;
integer handle ;
key hudkey = NULL_KEY;
default
{
state_entry()
{
if(hudkey == NULL_KEY)
{
handle = llListen(CHANNEL,"",NULL_KEY,"");
}
else
{
llListen(CHANNEL,"",llGetOwner(),"");
llListen(-1 * CHANNEL,"",hudkey,"");
}
}
listen(integer channel, string name, key id, string message)
{
if (hudkey == NULL_KEY && id != llGetOwner() )
{
hudkey = id;
llListenRemove(handle);
llListen(CHANNEL,"",llGetOwner(),"");
llListen(-1 * CHANNEL,"",hudkey,"");
}
if (id == llGetOwner() || id == hudkey)
if(message == "fire") state statefire;
if(message == "open") llWhisper(-1 * CHANNEL,"open");
if(message == "close") llWhisper(-1 * CHANNEL,"close");
}
}
}
statefire
{
state_entry()
{
llSetTimerEntry(TIMERDUR);
statecount =-1;
}
timer()
{
statetime +=(TIMERDUR * STATESPEED)
if(statecount == -1) // initialize
{
llWhisper(-1 * CHANNEL,"close");
llMessageLinked(ALL_CHILDREN,-1,"open",NULL_KEY);
statecount == 0;
statetime == 0.0;
};
if(statecount == 0) // Ring 1
{
llMessageLinked(ALL_CHILDREN,1,(string)(statecount / RINGDUR),NULL_KEY);
if (statetime>=RINGDUR)
{
statecount == 1;
statetime == 0.0;
}
};
if(statecount == 1) // Ring 2
{
llMessageLinked(ALL_CHILDREN,2,(string)(statecount / RINGDUR),NULL_KEY);
if (statetime>=RINGDUR)
{
statecount == 2;
statetime == 0.0;
}
};
if(statecount == 2) // Ring 3
{
llMessageLinked(ALL_CHILDREN,3,(string)(statecount / RINGDUR),NULL_KEY);
if (statetime>=RINGDUR)
{
statecount == 3;
statetime == 0.0;
}
};
if(statecount == 3) // Clear , Blank Time
{
llMessageLinked(ALL_CHILDREN,4,(string)(statecount / RINGDUR),NULL_KEY);
if (statetime>=0.5)
{
statecount == 4;
statetime == 0.0;
}
};
if(statecount == 4) // Fire
{
llMessageLinked(ALL_CHILDREN,5,(string)(statecount / RINGDUR),NULL_KEY);
if (statetime>=4)
{
statecount == 5;
statetime == 0.0;
}
};
if(statecount == 5) // blank
{
llMessageLinked(ALL_CHILDREN,6,(string)(statecount / RINGDUR),NULL_KEY);
if (statetime>=2)
{
statecount == 6;
statetime == 0.0;
}
};
if(statecount == 6) // Finalize
{
llWhisper(-1 * CHANNEL,"open");
llMessageLinked(ALL_CHILDREN,-1,"close",NULL_KEY);
state default;
};
}
}
2007年05月12日
店舗大幅拡張

ちょっと高い買い物になりましたが店舗そのままですが敷地を2倍以上に拡張してしまいました。
これで2304 square metersになったので月の管理費15$だ。
2007年05月12日
無料アイテム追加
胸のライトはクリックするごとにON/OFF/AUTOモードが変更でき、AUTOの場合、SIMの時間帯によって自動的にライトが点灯します。

店舗限定にて無料で配布中。
/irkutsk/29/172/0/
2007年05月12日
肩載せランチャー製作中。

角度を0度から90度まで調整できます。
実際に弾も飛んでダメージ与えられます(結構怪しいが)。

HUDコントローラーで砲の角度、実砲と空砲の変更、発砲の動作を操作できます。
(HUDを使用しない場合はチャット欄にコマンドを入力することで操作できます)。
ロボアバターにおひとつどうですか。近日発売。
2007年05月10日
ちょっと物騒なものになる予定のソース
vector CENTER_POS =<20,20,20>;
vector CENTER_FRONT = <0,0,0,0>;
vector ROTATION90 = <0,PI_BY_TWO,0>;
list BARREL = [ 3,<10,20,30>,<2,3,4,5>,
4,<10,20,30>,<2,3,4,5>
]
list BARREL_SLEEP = [ 3,<10,20,30>,<2,3,4,5>,
4,<10,20,30>,<2,3,4,5>
]
list barrelangle(float angle)
{
list newlist = [];
integer i;
integer listlength = llGetListLength(BARREL);
for (i = 0 ; listlength ; i += 3)
{
newlist += llList2Integer(BARREL,i);
vector pos = llList2Vector(BARREL,i+1);
rotation ang = llList2Rot(BARREL,i+2);
pos -= CENTER_POS;
pos = CENTER_POS +
(pos - CENTER_POS) * (llEuler2Rot(ROTATION90 * angle));
ang += llEuler2Rot(ROTATION90 * angle);
newlist += pos;
newlist += ang;
}
return newlist;
}
integer MoveAndRot(list parameter)
{
integer i;
integer listlength = llGetListLength(BARREL);
for (i = 0 ; listlength ; i += 3)
{
llMessageLinked(llList2Integer(i),
1,
(string)llList2Vector(i+1);
llMessageLinked(llList2Integer(i),
2,
(string)llList2Rot(i+2);
}
}
integer ready =0;
float angle = 0.5;
integer deltarot(float angle,float oldangle)
{
if(llAbs(angle-oldangle) > DELTA)
{
while(llFabs(angle-oldangle) > DELTA))
{
if (angle>oldangle) {oldangle += DELTA;}
else {oldangle -= DELTA;};
MoveAndRot(barrelangle(oldangle));
llSleep(0.5);
}
}
}
listen(integer channel, string name, key id, string message)
{
list commands = llParseString2List(message,[" "],[]);
if(ready != 0 & llList2String(commands,0) == "angle")
{
float oldangle = angle;
angle = (float)llList2String(commands,1)
deltarot(angle,oldangle);
MoveAndRot(barrelangle(angle));
}
if(llList2String(commands,0) == "debug_say")
{
llMessageLinked(LINK_ALL_CHILDREN,0,"");
}
if(ready != 0 && llList2String(commands,0) == "release")
{
float oldangle = angle;
deltarot(1.0,oldangle);
MoveAndRot(barrelangle(1.0));
llSleep(1);
MoveAndRot(barrelangle(BARREL_SLEEP));
ready = 0;
}
if(ready == 0 && llList2String(commands,0) == "ready")
{
MoveAndRot(barrelangle(1.0));
llSleep(1);
deltarot(angle,1.0);
MoveAndRot(barrelangle(angle));
ready = 1;
}
}
//各Prim
link_message(integer sender_num, integer num, string str, key id)
{
if(num==0)
{
llOwnerSay( (string)llGetLinkNumber() + "," +
(string)llGetLocalPos() + "," +
(string)llGetLocalRot() );
if(num==1)
{
llSetPos((vector)str);
}
if(num==2)
{
llSetLocalRot((rotation)str);
}
}
2007年05月10日
SF雑貨店 会員募集。
参加自体は自由&無料なので「SF雑貨店 会員」「Mechanized Soldier」の肩書きが欲しい方はぜひともご参加ください(参加後SeyfertSladeにIMいただければ肩書きを差し上げます)。ただいま会員2名(実質1名)。
2007年05月10日
カラー変更HUD試案ソース
// -1 カーソル位置移動
// -2 カーソルで選択されたパレットの色の反映
// -3 色選択
// -4 色選択後のパレットへの反映
// -5 RGBバーへの反映
// 1.. パレットの選択(Palette)/反映(<r,g,b>)
// -101 Load
// -102 Save
// -103 Default
// Cursor
float DELTA = 0.125;
vector col;
link_message(integer sender_num, integer num, string str, key id)
{
if(num=-1)
{
llSetPos((vector)str);
}
if(num=-2)
{
col =(vector)str;
llMessageLinked(LINK_ALL_OTHERS,-5,str,NULL_KEY);
}
if(num=-3)
{
if(str =="r+") col.x += DELTA;
if(str =="r-") col.x -= DELTA;
if(str =="g+") col.y += DELTA;
if(str =="g-") col.y -= DELTA;
if(str =="b+") col.z += DELTA;
if(str =="b-") col.z -= DELTA;
if (col.x > 1.0) col.x = 1.0;
if (col.x < 0.0) col.x = 0.0;
if (col.y > 1.0) col.y = 1.0;
if (col.y < 0.0) col.y = 0.0;
if (col.z > 1.0) col.z = 1.0;
if (col.z < 0.0) col.z = 0.0;
llMessageLinked(LINK_ALL_OTHERS,-4,(string)col,NULL_KEY);
llMessageLinked(LINK_ALL_OTHERS,-5,(string)col,NULL_KEY);
}
}
//RGB Bar
float HEIGHT =4.0;
link_message(integer sender_num, integer num, string str, key id)
{
if (num == -5)
{
float val = ((vector)str).x;
vector pos = <0,0,0> + <0,0,HEIGHT-(val-0.5) /2.0>
vector scl = <0.1,0.3,0.1> + <0,0,(HEIGHT-(val-0.5))>
llSetScale(scl);
llSetPos(pos);
}
}
//RGB Arrow
touch_start(integer touched_num)
{
llMessageLinked(LINK_ALL_OTHERS,-3,"r+",NULL_KEY);
}
//カラー変更HUD Palatte Prim
integer active = FALSE;
integer PALETTE_NUM = 1;
touch_start(integer touched_num)
{
llMessageLinked(LINK_ALL_OTHERS,PALETTE_NUM,"palette",NULL_KEY);
llMessageLinked(LINK_THIS,PALETTE_NUM,"palette",NULL_KEY);
}
changed(integer change)
{
if(cange & CHANGED_COLOR)
{
llMessageLinked(LINK_ROOT,PALETTE_NUM,(string)llGetColor(ALL_SIDES),NULL_KEY);
if(active)
{
llMessageLinked(LINK_ALL_OTHERS,-2,(string)llGetColor(ALL_SIDES),NULL_KEY);
}
}
}
link_message(integer sender_num, integer num, string str, key id)
{
if(num >= 1)
{
if(llGetSubString(str,0,6) == "palette")
{
active = (num == PALETTE_NUM);
if(active)
{
llMessageLinked(LINK_ALL_OTHERS,-1,(string)llGetLocalPos(),NULL_KEY);
llMessageLinked(LINK_ALL_OTHERS,-2,(string)llGetColor(ALL_SIDES),NULL_KEY);
}
return ;
}
else
{
llSetColor((vector)str,ALL_SIDES);
}
}
if(active && num =-4)
{
vector col = (vector)col;
llSetColor(col,ALL_SIDES);
}
}
//カラー変更HUD実行サブPrim
touch_start(integer touched_num)
{
llMessageLinked(LINK_ROOT,-1,"",NULL_KEY);
}
link_message(integer sender_num, integer num, string str, key id)
{
if (num == -101 || num == -103) // Load / Defalut
{
string desc = llGetObjectDesc();
list cl;
integer i;
if (desc == "" || num == -103)
{
cl =llCSV2List(str); // default;
}
else
{
cl = llCSV2List(desc);
}
integer listlength = llGetListLength(cl);
for(int i=0;i < listlength ;i++)
{
llMessageLinked(LINK_ALL_OTHERS,i+1,(string)llList2Vector(i),NULL_KEY);
}
llMessageLinked(LINK_ALL_OTHERS,1,"palette",NULL_KEY);
}
if (num == -102) // Save
{
llSetObjectDesc(str);
}
}
//カラー変更HUDデフォルトサブPrim
touch_start(integer touched_num)
{
llMessageLinked(LINK_ROOT,-2,"",NULL_KEY);
}
//カラー変更HUD Revert サブPrim
touch_start(integer touched_num)
{
llMessageLinked(LINK_ROOT,-3,"",NULL_KEY);
}
//カラー変更HUDRootPrim
string CHANNEL = -130;
list COLORDEFAULT = [<1,1,1>,<0.25,0.25,0.25>,<0,0,0>,<1,1,0>];
list cl;
list clBackUp;
state_entry()
{
cl = [llGetOwner(),"color"];
cl=cl + COLORDEFAULT; // default;
llMessageLinked(LINK_ALL_CHILDREN,-101,llList2CSV(COLORDEFAULT),NULL_KEY);
};
link_message(integer sender_num, integer num, string str, key id)
{
// Update Color
if (num >= 1)
{
llListReplaceList(cl,[(vector)str],num+1,num+1);
Return;
}
// Save/Apply
if (num == -1)
{
llWhisper(CHANNEL,llList2CSV(cl));
list newcl = cl;
llDeleteSubList(newcl,0,1);
llMessageLinked(LINK_ALL_CHILDREN,-102,llList2CSV(newcl),NULL_KEY);
return;
}
//Default;
if (num == -2)
{
cl = [llGetOwner(),"color"];
cl=cl + COLORDEFAULT; // default;
llMessageLinked(LINK_ALL_CHILDREN,-103,llList2CSV(COLORDEFAULT),NULL_KEY);
return;
}
//Revert to Last Save;
if (num == -3)
{
cl = [llGetOwner(),"color"];
cl=cl + COLORDEFAULT; // default;
llMessageLinked(LINK_ALL_CHILDREN,-101,llList2CSV(COLORDEFAULT),NULL_KEY);
return;
}
};
//パーツRootPrim
string HUDNAME = "Color Changer HUD";
string CHANNEL = -130;
integer handle;
key HUDkey;
state_entry()
{
handle = llListen(CHANNEL,HUDNAME ,NULL_KEY,"");
HUDkey = "";
}
listen(integer channel, string name, key id, string message)
{
list cl = llCSV2List(str);
if( llList2Key(cl,0)==llGetOwner() &&
llList2String(cl,1) == "color") )
{
llMessageLinked(LINK_SET,1,message,id);
if(HUDkey = "")
{
HUDkey = id;
llListenRemove(handle);
handle = llListen(CHANNEL,HUDNAME ,HUDkey,"");
}
}
}
//パーツChildPrim ,Descに1~のカラーコードを設定する
link_message(integer sender_num, integer num, string str, key id)
{
if(num == 1)
{
string desc = llGetObjectDesc();
if(llSubStringIndex(desc,",") >= 0)
{
list dl = llCSV2List(desc);
list cl = llCSV2List(str);
integer listlength = llGetListLength(dl);
for (i = 0 ; i < listlength; i++);
{
string ds = llList2String(dl,i);
if ((integer)ds > 0)
{
llSetColor(llList2Vector(cl,(integer)ds + 1),i);
}
}
}
else if((integer)desc > 0)
{
list cl = llCSV2List(str);
llSetColor(llList2Vector(cl,((integer)desc) + 1,ALL_SIDES);
}
}
}
2007年05月07日
こ、これは……
とりあえず今のうちならうちの店の2Fでみれます。
色が違うからな、細かいところも違うからな、似てるようで似てないからな、といっておこう。

2007年05月07日
M2J Core 2nd Live コンサートに行く
目玉(ォィ)は「超サイボーグ人バカデスのテーマ」。
ウサギがステージで踊ったりドクターBBQとか波乱万丈のステージと相成りました。

やっぱりこの格好で踊るか>俺。
色変えたり背中をパタパタ開いたり閉じたりで自己流に盛り上げてました。
2007年05月04日
Stargateはじめました。
スターゲイトは、1928年にエジプトのギザ高原で発掘された巨大な金属製の環である。環状部分には、39種類のシェブロン(シンボル)と呼ばれる文字が刻まれており、発掘当初は何らかの破壊兵器であると考えられていたが実際には星間移動装置であった。宇宙四大種族のうちの一種族、エンシェントによって創り出されたものと考えられている。ゲイトを構成する物質はナクアダと呼ばれる(架空の)鉱石から精製される金属で、地球上には存在しない。
(Wikipedia 日本語版 「スターゲイト」より)
SecondLifeにはSF好き者が多いらしく(というかSF雑貨店なんて立ち上げといて白々しく言うか)、グループでStargateで検索すると出るわ出るわ。で、このスターゲイトのシステムをSecondLifeで再現してしまったのがこのリング。

無償版もあるんですがPrim数がかなり多いので、うちに設置したのは150L$の4Prim版です。
この装置の前に立って「dd:random」とチャットで入力すると輪の中にイベントホライズンが発生してSecondLife内のほかのスターゲイトにつながります。輪の中心をクリックすると転送先のマップが表示されるので「テレポート」を押しましょう。
詳細はGeneral Stargate Helpで。設置済みのスターゲイトの一覧もあります。
ちなみにうちのアドレスは
になります。
追記:どうも正常に動作していないようで、こちら側からジャンプ先が正しく行われないようです。ネットワーク側には認識されているようですが、こちらのスターゲイトががネットワーク側から取得した座標を転送先として正しく処理されていないようです。現在販売者に問い合わせ中。