Mad Scripter's Lab ~ Main Lab ~ | 姉妹サイト Mad Scripter's Lab |
河原町 =Shop eL=(ぇる)1号店= | Niseko3 =Shop eL=(ぇる)3号= |
裏原宿 Mad Scripter's Lab | ※下の3店舗は閉店しました。 |
2008年09月26日
無料配布中の3D Pencil 試作版について
現在配布中の3D鉛筆ですが、
2008年09月17日
3D Pencil チュートリアル♪
先日配布開始した3D鉛筆ですが、⇒[3D Pencil 試作版無料配布☆]

多くの方に取りに来ていただき、またブログへのコメントもたくさんいただいてありがとうございます。m(_ _)m
もうしばらくは配布を続けるので興味を持っていただいた方は是非ためしてくださいね^^
配布場所はメインラボ ⇒ Mad Scripter's Lab ~ Main Lab ~
さて、実際使っていただくとよくわかるのですが、この3D鉛筆。。。。。
ぶっちゃけ難しいです。
マニュアルが同梱のテキストファイル(Notecard)や前回の記事のSSだけでは分かりにくいとおもったので
GIFアニメでチュートリアルを作ってみました。
⇒『3D Pencil チュートリアル』
※ファイルサイズが約1.87MBと大きめなのでリンクにしました。
文字並べられたマニュアルなんて読む気しNeeeee!とか、
わかんNeeeee!って方は参考にしてください(w
前回の記事の繰り返しになりますが、ここでお願いがあります。
今回無料配布するのは、「ユーザの意見を取り入れてよりよい作品に仕上げるため」
いわばBeta版です。よって配布品同梱のRead Meにも記していますが
できるだけコメント・要望・感想をフィードバックしてください。
やり方は簡単、このブログにコメントを残すだけ。
ポピは
またはSLで直接IMしていただいてもOKです。
そんなわけでそこんとこお願いします。m(_ _)m
それと、今回の配布品は正式版公開予定の10/18をもって使用不能になるようにしてあります。
悪しからずご了承ください。
3D鉛筆の使い方やバージョンアップ情報、「展示」のお知らせなどは随時記事をアップするのでよろしくで~っす。
続報を待て!w
続きにはマニュアルをコピペしておきます。
続きを読む
2008年09月06日
3D Pencil 試作版無料配布☆
RLは米国西海岸に滞在中のぽぴであります。
今回は期間限定無料配布品のお知らせです。
配布場所はメインラボ ⇒ Mad Scripter's Lab ~ Main Lab ~
え~、以前からすでに何人かには手渡しで配って使っていただいているのですが、
↓が新作 『3D Pencil』です。
(後ろの□ぃゴミは気にしないで)
毎度おなじみ、頑張った割には大したことないパッケージはこちら。

さて何ができる鉛筆かというと、ぶっちゃけ字が書けます・絵が描けます。(まんまかぃ
書いてみたところ。
ダイアログから色と太さが選べたりします。
ちょっと頑張れば文字も書けます。
特に漢字根気との勝負であります。
※その分著しくプリムを食います。
メインラボの上に浮かぶデカデカとした落書き。
作者はセンスがないのでこれを使って絵は描かないのですが、
センスに恵まれた方ならコレでお絵かきすることももちろん可能でしょう。
3D鉛筆(和名)の機能をざっと走ってみました。
ところで先ほど「期間限定無料配布」といいましたが、ここでお願いがあります。
今回無料配布するのは、「ユーザの意見を取り入れてよりよい作品に仕上げるため」
いわばBeta版です。よって配布品同梱のRead Meにも記していますが
できるだけコメント・要望・感想をフィードバックしてください。
やり方は簡単、このブログにコメントを残すだけ。
ポピは
またはSLで直接IMしていただいてもOKです。
そんなわけでそこんとこお願いします。m(_ _)m
んで、配布場所はメインラボ ⇒ Mad Scripter's Lab ~ Main Lab ~
・・・・っと忘れるとこだった。
んと、今回の配布品は正式版公開予定の10/18をもって使用不能になるようにしてあります。
悪しからずご了承ください。
3D鉛筆の使い方やバージョンアップ情報、「展示」のお知らせなどは随時記事をアップするのでよろしくで~っす。
続報を待て!w
続きにはマニュアルをコピペしておきます。 続きを読む
2008年08月12日
実験的呼び鈴(コード公開)
まいどです(´・ω・`)ノ
ポピーであります。
ひさびさのスクリプト講座でーす。
今回はオンラインステータス表示・呼び鈴スクリプトなんですが、
ただOnline・Offlineを表示するだけとか、
ただクリックして定型文なり入力したStringをスクリプトIM送るだけでは
イマイチ芸がないので今回はちょっとへんてこな方法を試してみました。
ではさっそくコードから。
注:今回公開しているスクリプトはポピーが個人的な趣味で実験的に組んだものです。
何度か動作は確認してはいますが、読者の皆様がコピペあるいは改造して
個人使用・商用利用した際に生じた動作不良や不具合に対して補償はできません。
悪しからず御了承願います。
//llKey2Name()の特性を利用したOnline Status
//MasterPoppy Amat
key req;
key owner;
default
{
state_entry()
{
llSetText("高機能な呼び鈴\nタッチすべし。",<1,1,1>,1);
owner = llGetOwner();
//このコードではオーナーのKeyがコンパイルした時点で代入されるきりなので
//他人に譲渡すると動作がおかしくなるので注意。
//このままコードを使用するときは自分でスクリプトをコピペして使うべき。
}
touch_start(integer total_number)
{
if(llKey2Name(owner) != "")
{
llSay(0,"オーナーはこのSIMか隣のSIMにいるようです。");
//llKey2Nameが空のstringを返せば
//入力したKeyのAgent(アバター)は同一SIM・隣接SIMにいない。
}
else
{
req = llRequestAgentData((key)owner,DATA_ONLINE);
//どうやらこのSIMにはいないようなのでOnline判別にゴー
//↓dateserver()へ。
}
}
dataserver(key requested, string data)
{
if((req == requested) && (data == "1"))
//おなじみのllRequestAgentData()を使ったOnline Status確認。
//dataはstring型であることに注意。
{
llSay(0,"オーナーはONLINEですが他のSIMにいるようです。");
}
else
{
llSay(0,"オーナーはOFFLINEのようです。");
}
llSleep(1.0); //一呼吸
llSay(0,"何か用事の方はチャットログから↓クリックするとプロフィールが出るのでそっからIMどぞ。");
llSay(0,"secondlife:///app/agent/" + (string)owner + "/about");
//SLURLのプロフィール表示機能key型変数をStringにキャストして挟むことで一般化。
}
}
今回のスクリプトの機能は3つです。
タッチすると⇒
・Onlineの場合、オーナーがオブジェクトがあるSIMまたはその隣接SIMにいるかを判別―①
・あるいは他のSIMにいるかを判別―②
・Offlineの場合はプロフィールを表示するSLURLを0チャンネルで発言―③
といった感じです。
まずは①の機能解説から
使っている関数はllKey2Name()です。
⇒LSL Portal:LlKey2Name/ja
llKey2Name()の本来の機能はKey型変数を本来の名前、すなわちオブジェクト名やアバター名に直して返す、というものですが
LSL Portalに以下の記述があります。
"idがそのSim及びその付近に居なかった場合は空のstringが返されます。"
これを拡大解釈して、llKey2Name()からreturnされた中身で
A.空でないstring、つまりは名前が返された場合⇒アバターは同一SIMか隣接SIMにいる。同時に当たり前だけどOnlineである。
B.空のstringが返された場合⇒アバターはほかのSIMにいる、またはOfflineである。
というふうに見方を変えて使っています。
コードの20~25行目に相当する部分ですが、A.のときはOnlineでかつ近くにいるということを示すので
そのことをチャットで情報を吐かせています。
"オーナーは"の部分はお好みで"ぽぴは"などとあだ名にするなり、
llKey2Name(llGetOwner())を使って一般化してもいいでしょう。
一方B.のケースですが、これだけではOnlineかOfflineかもわかりません。
こっちはよくあるOnline StatusのようにllRequestAgentData()を使って判別しています。
⇒LSL Portal:llRequestAgentData
⇒LSL Portal:Dataserver/ja
この場合にdataserver(key query_id, string data)で返ってくるdataの値なんですが、
どうもstringとしてOfflineなら"0"が、Onlineなら"1"が返ってくるみたいです。(´・ω・`)
(integerなTRUEとFALSEが返ってくると思いこんでハマった。)
Dataserver()の仕様を見ても

なんやら変則的。
まぁリンデンの気まぐれに惑わされるのはここまでにして、
これでめでたくOnlineでありかつ他のSIMにいる場合と、落ちちゃってる場合の判別ができたわけですが、
ついでなのでもう一個おまけ機能つけました。
よくあるIM送信機能付き呼び鈴ではタッチしてListenを開いて⇒拾ったStringをスクリプトIMで送信という流れをくんでいますが、
ポピはスクリプトIM好きじゃないんです。
おなじIMでもヒトの温かみのある(謎)アバターどうしのIMが好きです(*´ω`*)
というわけで用事のあるかたには直にIM送ってもらいたいです。(´・ω・`)
ここで登場するのが『secondlife://』。
リンク先のページにある
/app
- /agent
- /<agent_id>
- /about open agent's profile, with 2nd Life tab selected
- /about open agent's profile, with 2nd Life tab selected
- /<agent_id>
(個人情報掲載!?Σ( ̄□ ̄|||)・・・・・・・・・・・・・・・というほどでもないと思うが。)
インワールドでアバターまたはオブジェクトに
secondlife:///app/agent/72c03405-8305-48d9-ad18-f512f9db67f9/about
と発言させてチャットログからリンク補完されたテキストをクリックすると
ぽぴのプロフィールが表示されます。
こいつを48行目のように
llSay(0,"secondlife:///app/agent/" + (string)owner + "/about");
※変数ownerはkey型で定義
としてやると一般的にオーナーのプロフィールを表示するSLURLを発言してくれます。
ユーザからするとひと手間かもですが、
オブジェクトのオーナからプロフ辿ってIM入れてもらうよりはいいかと。( ̄ー ̄)
機能とか仕組みの解説は以上かな。
ウチのラボで実際に設置してるんですが、オブジェクトのデザインが残念です;
僕と違って いいセンスをお持ちのみなさんはもっと素敵になオブジェクトで作ってくださいね。^^;

2008年05月25日
自動改札作ってみました。
はいどうも~。おもっきしブログさぼり気味のポピーです。
ひさびさの新作(といいつつだいぶ前にできたものを掘り起こした^^;)紹介です。
SLで自動改札作ってみました。

例の如くノートPC鞭打って 動作紹介動画です。
続きを読む
2008年04月06日
スクリプト指南書
何気なくSLのインストールディレクトリを開いてみたら
なんじゃこりゃw すっげー気になる!w
前からこんなんあったっけか。
と、いうわけで開いてみる→ ( "C:\Program Files\SecondLife\lsl_guide.html" )
※上のフルパスをブラウザのアドレスバーにコピペすれば一発で開けます。
これは。。。。。。LSLスクリプト指南書!w
なにこれ。詳しい、かつめっちゃ丁寧やん。
とくに11.3らへんみてフイタ。
AAっすかwww
たしかにわかりやすいし、
HTML文書単体でグラフィカルに説明しようとおもったらこうなるw
しかしおもろすぎ。
まじめなんだか何なんだか・・・・・w
これ読んでもっかい勉強しょうかな。
2008年03月13日
レーダーを作ってみよう。(その2)方角表示してみる。
前回→ レーダーを作ってみよう。(その1)
ほいじゃ レーダーに8方位表示機能をつけてみましょう。
完成品のSSをもう一度。
アバター名+距離の次に8方位を表示するようにしています。
なくてもいいですがある方が断然便利なのでつけた機能です。
さてさて8方位表示・・・・・・・どします?w
2008年02月29日
レーダーを作ろう。(その1)
前回→ レーダーを作ってみよう。(その0)
レーダー製作の核となるのが llSensorRepeat の使い方の理解であります。
いきなりですがさっそくレーダーぽいものを作っちゃいまっしょう。
string txt;続きを読む
//フローティングテキストに表示する文字列を代入する変数
vector v;
float R = 96; //センサーの範囲
default
{
state_entry()
{
llOwnerSay("Rader On");
llSensorRepeat("", "", AGENT, R, TWO_PI, 1.0);
//1秒ごとにセンサー起動
}
no_sensor()
{
llSetText("No Avator" , <1,1,1>, 1);
//センサーに何も反応がなければ No Avator と白字で表示する
}
sensor(integer total_number)
{
integer i;
integer r;
//if(DetectedKey(0)==llGetOwner())
//{
// i=1++;
//}
////
//REZ設置するタイプのセンサーだとこの処理を加える必要があるが、
//HUDだとOwnerはDetecte(=検出)しないので特に必要ない
////
for ( i = 0; i < 8; i++ )
{
if ( llDetectedKey(i) != NULL_KEY)
{
v = -llGetPos() + llDetectedPos(i); //相対座標ベクトル
r = llRound(llVecMag(v)); //相対距離:四捨五入しておく
txt += llDetectedName(i) + " : " + (string)r +"m" + "\n";
//txt変数に i 番目に検出したアバターの名前を相対距離(m)を改行コードとおもに書きこんでいく
}
}
llSetText(txt, <1,1,1>, 1); //フローティングテキストに出力
txt = ""; //出力内容のクリア。→1秒後に次回のsensor
}
}
2008年02月29日
LSL色付けツール導入
※表示が普通のときはツールを置いてるサーバーが落ちてる時だともいます。
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}
これはかなりいいです。
2008年02月27日
レーダーを作ってみよう。(その0)
フリーアイテムにしろ、有料アイテムにせよ、
スクリプト作品でよく見かけるのが「レーダー」です。
よく見かける割にはあんまりソース公開してるところがなさげです。
便利だからよく使ってる(つか常用してる)んですが、
どれもどうもしっくりこないというか、
ここがもうちょっととこうだったらいいのにな~って思う部分があったりします。
というわけで今回はレーダーつくっちゃえ!という運びになりました。
とりあえず完成品はこんな感じ。↓ 続きを読む
2008年01月29日
おあそびで拡声器作ってみた。
お遊びで拡声器作ってみました。イベントのスタッフの方とか使うやつかな。
ひだりの赤マルがスクリプトを仕込んだHUD。
僕自身は普通にチャットで発言してるだけです。
100m先ぐらいまで聞こえると思います。
default{ state_entry() { llSetObjectName("megaphone"); llSetText("Off",<1,1,1>,1); } touch_start(integer total_number) { if(llDetectedKey(0) == llGetOwner()) { state on; } }} state on{ state_entry() { llSetObjectName(llKey2Name(llGetOwner())); llSetText("On",<1,1,1>,1); llListen( 0, "", llGetOwner(), "" ); } touch_start(integer total_number) { if(llDetectedKey(0) == llGetOwner()) { state default; } } listen(integer channel, string name, key id, string message) { llShout(0,message); } } |