2007年08月20日
大砲屋完成まじか・・
クマドリワークスの協力を得て、大砲屋Vo1完成まじかです。
ゲームは制限時間の中でどれだけの海賊船を倒せるかというシンプルな内容ですが、
ランキング機能など、普通のゲームとして遊べるものになってきています。
おそらく、SLSでできる事をフルに使ったものになっていると思います。
あと、2日ぐらいで、メルティングドッツの島で遊べるはずですので、よかったら遊んでみてください。
Posted by T4476 at
16:35
│Comments(0)
2007年08月03日
とりあえず
最近別のことにおわれ、なかなか作業ができませんでしたが現在急ピッチで、完全公開に向け
作業中。今日正式な公開日を決めに相談する予定。しばらくはスクリプトに関する記事は、
書いてる暇がないかも・・・
Posted by T4476 at
12:37
│Comments(0)
2007年07月26日
大砲屋
大砲屋(射的)の基本形ができあがりました。
大砲を操作して、大玉で船を打ち落とすシンプルなゲームです。
まだ、制限時間の表示や得点、大玉を邪魔するエネミーなど・・拡張要素はかなり
残っておりますが・・近日現在公開している場所に移築予定です。
仕事の合間と夜限定で作っているので時間はかかると思いますが・・暇があったら遊んでみてください。
Posted by T4476 at
01:20
│Comments(0)
2007年07月18日
移築
浅枝氏と&MELTINGDOTSの方々と、色々お話(リアルワ-ルドで)しているうちに、
まーせっかく作ったもんだしもったいないということで、MELTINGDOTSのSIMに
期間限定で公開する事になりました。現在移築作業しております。
仕事アバターで動いておりますので、名前は違いますがよかったら声かけてみてください。
Posted by T4476 at
22:30
│Comments(0)
2007年07月17日
おみくじ完成&実験島様子動画
実験島の様子をキャプチャーしてみました。
おみくじも、一応完成。次は盆踊りに着手する予定です。
Posted by T4476 at
21:00
│Comments(0)
2007年07月12日
スカルプトプリム
社内の子が根性で、スカルプトプリムを使い車をつくりました。基本的な車体は1プリム
どうも、スカルプトの再現能力としては、このあたりが限界なようで、UVもゆがんでいてどうも扱い
ずらいようです。基本的には、複雑な部品を作りたい時に使えということなんでしょうか・・・。
Posted by T4476 at
12:38
│Comments(0)
2007年07月12日
近く公開できるかも・・
とある有名な場所にて期間限定で公開できるよう現在調整中です。
一応屋台で、売ってる物(お面とか食べ物とか)は、無料配布。
射的・盆踊り・御参りも、できるようにスプリクトとモーションも制作中。
ついでに、スプリクトを協力していただける方も募集中。
本当に遊べる夏祭りにできればと思ってがんばっております。
詳しい事が決まりしだいまたご報告します。
それと、こんな事したらという要望がありましたらコメントください。
2007年07月07日
llSetLinkPrimitiveParamsの謎
llSetLinkPrimitiveParamsだと、PRIM_POSITIONが機能しない現象が起こってます。
PRIM_POSITION以外は機能しているようです。llSetPrimitiveParamsでは、確かに機能し
していたので、これは便利と思っていたのですが・・・。
もっとっも、簡単なTEST文を載せてみました。何か問題があるのでしょうか?
ご存知の方がいらしゃったら是非お教えください。
-----------------------------------------------------------------------------------------
default
{ touch_start(integer total_number)
{
llSetLinkPrimitiveParams(LINK_ALL_OTHERS, [PRIM_POSITION, <148, 188, 30>]);
}
}
---------------------------------------------------------------------------------------
これを前提とした便利ツールを考えていて、かなりの部分ができた段階で
この問題に直面・・・一気にやる気が・・・。
PRIM_POSITION以外は機能しているようです。llSetPrimitiveParamsでは、確かに機能し
していたので、これは便利と思っていたのですが・・・。
もっとっも、簡単なTEST文を載せてみました。何か問題があるのでしょうか?
ご存知の方がいらしゃったら是非お教えください。
-----------------------------------------------------------------------------------------
default
{ touch_start(integer total_number)
{
llSetLinkPrimitiveParams(LINK_ALL_OTHERS, [PRIM_POSITION, <148, 188, 30>]);
}
}
---------------------------------------------------------------------------------------
これを前提とした便利ツールを考えていて、かなりの部分ができた段階で
この問題に直面・・・一気にやる気が・・・。
2007年07月03日
2007年07月02日
御社
ここんとこ、テキスチャーの実験用に作っていた手間取ってた御社が、一応完成。とても疲れました。
モデリングとテキスチャーの兼ね合いと環境光源を考えながら色調整・・・完成度を上げるにはひたすら根気勝負。いやー楽なツールになれた昨今の体にはこたえます。それでも、初期のストラタを触っているようでとっても懐かしく、工夫の大事さを痛感します。
2007年06月30日
出たり消えたりできるメッセージボード
タッチすると表示されさらにタッチすると消えるメッセージボードを作ろうと考え
作ってはみたものの・・機能的には一応問題がないのですが、使いがっては悪いのと
出現中はリッスンが常時作動中というのも問題。とりあえずはベースとして忘れないように
メモ書きとして残しておきます。
------------------------------------
1.親OBJ スイッチ側に以下のスクリプトを突っ込みます。
------------------------------------
default
{
touch_start(integer total_number)
{
llRezObject("Message", llGetPos() + <0, 0, 2.0>, ZERO_VECTOR, llGetRot(), 0);
}
object_rez(key id)
{
state off;
}
}
state off
{
touch_start(integer total_number)
{
llSay(2, "off");
state on;
}
}
state on
{
touch_start(integer total_number)
{
llRezObject("Message", llGetPos() + <0, 0, 2.0>, ZERO_VECTOR, llGetRot(), 0);
}
object_rez(key id)
{
state off;
}
}
------------------------------------
2.子供obj 出現側に以下のスクリプトを突っ込みます。
------------------------------------
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
integer mes = llListen(2, "mes_obj",NULL_KEY, "off");
}
listen(integer channel, string name, key id, string message)
{
llDie();
}
}
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
integer mes = llListen(2, "mes_obj",NULL_KEY, "off");
}
listen(integer channel, string name, key id, string message)
{
llSay(0, "dell");
llDie();
}
------------------------------------
3.スクリプトを入れたらさらに、親objに格納するとできあがり。
------------------------------------
作ってはみたものの・・機能的には一応問題がないのですが、使いがっては悪いのと
出現中はリッスンが常時作動中というのも問題。とりあえずはベースとして忘れないように
メモ書きとして残しておきます。
------------------------------------
1.親OBJ スイッチ側に以下のスクリプトを突っ込みます。
------------------------------------
default
{
touch_start(integer total_number)
{
llRezObject("Message", llGetPos() + <0, 0, 2.0>, ZERO_VECTOR, llGetRot(), 0);
}
object_rez(key id)
{
state off;
}
}
state off
{
touch_start(integer total_number)
{
llSay(2, "off");
state on;
}
}
state on
{
touch_start(integer total_number)
{
llRezObject("Message", llGetPos() + <0, 0, 2.0>, ZERO_VECTOR, llGetRot(), 0);
}
object_rez(key id)
{
state off;
}
}
------------------------------------
2.子供obj 出現側に以下のスクリプトを突っ込みます。
------------------------------------
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
integer mes = llListen(2, "mes_obj",NULL_KEY, "off");
}
listen(integer channel, string name, key id, string message)
{
llDie();
}
}
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
integer mes = llListen(2, "mes_obj",NULL_KEY, "off");
}
listen(integer channel, string name, key id, string message)
{
llSay(0, "dell");
llDie();
}
------------------------------------
3.スクリプトを入れたらさらに、親objに格納するとできあがり。
------------------------------------
2007年06月25日
リッスン
llListen(integer channel, string name, key id, string msg)
channel
チャットチャンネルを指定します。整数ならなんでもOKプリム同士で通信させたい場合は、 llSay(0, "こんにちわ");のチャットチャンネル部分を同じにしなければなりません。
name
アバターに限らず、オブジェクトの名前を指定できる。
id
UUIDを指定します。NULL_KEYを使った場合は、全ての人/物に有効になる。UUIDが不明の場合はこれを指定。
msg
なんと言う言葉にを受信するか、指定した場合はその単語の受信の有無を示す。
何でも聞いて欲しい場合は””空文字を指定。
例
llListen(2, "obj", NULL_KEY, ""); 〔2チャンネルのobjの発言を聞け!! 〕
llListenRemove(integer number)
llListenをストップする命令。llListenを常時つけっぱなりはよくないそうでなので、必要な情報が聞けたらすぐにストップするのがいいようです。
number
llListen(integer channel, string name, key id, string msg)を変数に代入すると、整数値が入ります。整数値がllListenの番号となります。つまりllListenは複数同時に走らせ好きな番号のllListenをつけたり消したりできるようです。
例
integer CH;
CH=llListen(2, "obj", NULL_KEY, "");
llListenRemove(CH); // listen OFF
channel
チャットチャンネルを指定します。整数ならなんでもOKプリム同士で通信させたい場合は、 llSay(0, "こんにちわ");のチャットチャンネル部分を同じにしなければなりません。
name
アバターに限らず、オブジェクトの名前を指定できる。
id
UUIDを指定します。NULL_KEYを使った場合は、全ての人/物に有効になる。UUIDが不明の場合はこれを指定。
msg
なんと言う言葉にを受信するか、指定した場合はその単語の受信の有無を示す。
何でも聞いて欲しい場合は””空文字を指定。
例
llListen(2, "obj", NULL_KEY, ""); 〔2チャンネルのobjの発言を聞け!! 〕
llListenRemove(integer number)
llListenをストップする命令。llListenを常時つけっぱなりはよくないそうでなので、必要な情報が聞けたらすぐにストップするのがいいようです。
number
llListen(integer channel, string name, key id, string msg)を変数に代入すると、整数値が入ります。整数値がllListenの番号となります。つまりllListenは複数同時に走らせ好きな番号のllListenをつけたり消したりできるようです。
例
integer CH;
CH=llListen(2, "obj", NULL_KEY, "");
llListenRemove(CH); // listen OFF
2007年06月22日
イベント覚書(修正)
event | 引数 | 内容 | 備考 |
---|---|---|---|
at_rot_target | (integer tnum, rotation targetrot, rotation ourrot) | llRotTargetを使用してターゲットのローテーション に到達した場合に呼ばれる。 | |
at_target | (integer tnum, vector targetpos, vector ourpos) | llTargetを使用して設定したターゲットに到達した場合に呼ばれる。 | |
attach | (key id) |
agentが objectを脱着した際に呼ばれる。 | |
changed | (integer change) | オブジェクトのさまざまな状態が変更されたときに予備される。 | CHANGED_INVENTORY/CHANGED_COLOR /CHANGED_SHAPE/CHANGED_SCALE/CHANGED_TEXTURE /CHANGED_LINK/CHANGED_ALLOWED_DROP/ CHANGED_OWNER/ CHANGED_REGION /CHANGED_TELEPORT |
collision | (integer num_detected) | taskが他のタスクとコリジョン(colliding)した(重なっている)場合に呼ばれる。 | |
collision_end | (integer num_detected) | タスクのほかのタスクとのコリジョンが終了した場合に呼ばれる。 | |
collision_start | (integer num_detected) | タスクが他のタスクとコリジョンを開始した場合に呼ばれる。 | |
control | (key id, integer held, integer change) |
llTakeControlsを使用時に,プレス/ホールド/リリースを検知した場合に呼ばれる。 | |
dataserver | (key queryid, string data) | 非同期データを受信した際に呼ばれる。 | |
(string time, string address, string subj, string message, integer num_left) | emailを受信した際に呼ばれる。 | ||
http_response | (key request_id, integer status, list metadata, string body) |
llHTTPRequestリクエストのレスポンスを受信した際に呼ばれる | |
land_collision | (vector pos) | 土地へのコリジョンが発生した場合によばれる | |
link_message | (integer sender_num, integer num, string str, key id) | llMessageLinkedによるメッセージの受信時に呼ばれる |
|
listen | (integer channel, string name, key id, string message) |
llListenによって設定された条件でタスクの聞き取れる範囲でチャットを受信した際に呼ばれる |
|
money | (key id, integer amount) |
お金を受け取った際に呼ばれる。 |
|
moving_end | () | simを出た場合や移動を停止した場合に呼ばれる | |
moving_start | () | 移動時やsimに入った場合に呼ばれる | |
no_sensor | () | llSensor や llSensorRepeat によって何も見つけられなかった場合に呼ばれる。 | |
not_at_rot_target | () | llRotTargetで指定したターゲットに到達した場合,しなかった場合に呼ばれる。 | |
not_at_target | () | llTargetで指定した目標に到達できた場合やできなかった場合に呼ばれる | |
object_rez | (key id) | llRezObjectを使用して他のobject のrezzesが完了した場合に呼び出される |
|
on_rez | (integer start_param) |
自分がrezされた場合に呼ばれる。(インベントリや他のタスク(オブジェクト)により) |
|
remote_data | (integer event_type, key channel, key message_id, string sender, integer idata, string sdata) |
XML-RPC 通信を受信した場合に呼ばれる | |
run_time_permissions | (integer perm) | 実行時に、agent に対してllRequestPermissionsを利用してパーミッションのリクエストをした場合に呼ばれる。 | |
sensor | (integer num_detected) |
llSensor or llSensorRepeatで検知した場合に呼ばれる | |
state_entry | () | 状態の遷移時に呼ばれる。 | |
state_exit | () | 他の状態へ遷移する際に呼ばれる。 |
|
timer | () | llSetTimerEventによるタイマーイベント |
|
touch | () | エージェントがクリックした際に呼ばれる | |
2007年06月20日
触ると光るライト
touchすると光るライトを作ってみました。これを発展させ、夜になると光るライトを作る予定。
--------------------------------------
default
{
state_entry()
{
//ライトの設定 最初は消してます。
llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, <0.0, 0.0, 0>, 0, 3.5, 0.5]);
//”touch me”の表示
llSetText("touch me",<1.0,0.0,0.0>,1.0);
//stateの定義?消してるからステータスはOFF
state off;
}
touch_start(integer total_number)
{
//タッチすると、つきます。
llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE, <1.0, 0.5, 0.25>, 1, 10, 0.5]);
//ついてるので、ステータスはon
state on;
}
}
//ステータスがonなら
state on
{
touch_start(integer total_number)
{
llSay(0, "Touched.off");
//タッチすると消えます
llSetPrimitiveParams( [PRIM_POINT_LIGHT, FALSE, <0.0, 0.0, 0>, 0.5, 3.5, 0.5]);
//消してるからステータスはOFF
state off;
}
}
//ステータスがoffなら
state off
{
touch_start(integer total_number)
{
llSay(0, "Touched.on");
//タッチすると、つきます。
llSetPrimitiveParams( [PRIM_POINT_LIGHT, TRUE, <1.0, 0.5, 0.25>, 1, 10, 0.5]);
//ついてるので、ステータスはon
state on;
}
}
--------------------------------------
とまーこんな感じで作ってみました。ファンクションなんかを使うとまとめられるのですが、まだまだ初心者なんで、ストレートに書いてみました。一応思ったように機能しているので、構文的に問題あってもよしとします。単なる覚え書きですのでご勘弁を
2007年06月15日
パーミッション問題解決
小物を持った時に強制的にアニメーションさせようと思い、
attach(key attached)
{
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
}
と書くて見ましたが、どうもこのattach時にオーナーのPERMISSIONを参照しようというのが
そもそもの間違いのようでした。この方法では、takeして初めて使うプリムはオーナーがどうやら参照できないようで、パーミションの許可を取るタイミングを別の方法を使用する必要があるようでした。
そこで、掲示板で書かれたいた、changed イベントを検討したのですがどうもattachと同じ理由で
うまくいかず、そうこうしているうちにrezの存在を知り色々と思考錯誤の結果解決する事ができました。
以下が解決した、スクリプトです。ただし以下のスクリプトだけでは実用品としては問題が多数ありエラーも起きます。まー今回の問題にくらべれば簡単そうなので、実用品になれば公開したいなぁーと考えています。
-----------------------------------------
string Anim = "Model Pose 3"; //アニメの名前
default
{
//プリム出現時にパーミションを要求
on_rez(integer param){
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
}
//装着後アニメ開始
attach(key attached)
{
llStartAnimation(Anim);
}
}
-----------------------------------------
attach(key attached)
{
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
}
と書くて見ましたが、どうもこのattach時にオーナーのPERMISSIONを参照しようというのが
そもそもの間違いのようでした。この方法では、takeして初めて使うプリムはオーナーがどうやら参照できないようで、パーミションの許可を取るタイミングを別の方法を使用する必要があるようでした。
そこで、掲示板で書かれたいた、changed イベントを検討したのですがどうもattachと同じ理由で
うまくいかず、そうこうしているうちにrezの存在を知り色々と思考錯誤の結果解決する事ができました。
以下が解決した、スクリプトです。ただし以下のスクリプトだけでは実用品としては問題が多数ありエラーも起きます。まー今回の問題にくらべれば簡単そうなので、実用品になれば公開したいなぁーと考えています。
-----------------------------------------
string Anim = "Model Pose 3"; //アニメの名前
default
{
//プリム出現時にパーミションを要求
on_rez(integer param){
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
}
//装着後アニメ開始
attach(key attached)
{
llStartAnimation(Anim);
}
}
-----------------------------------------
2007年06月14日
2007年06月12日
パーミッション
llRequestPermissions(key agent, integer perm);
key agent・・・・・・対象者のkey
integer perm・・・許可してほしい内容
例
PERMISSION_TRIGGER_ANIMATION(アニメーションさせたい)
PERMISSION_ATTACH (アタッチしたい)
PERMISSION_CHANGE_LINKS (リンクさせたい)
問題は対象者のkeyの習得習得には、現時点で以下の方法があるらしい事が判明
llGetKey () スプリクトが入っているprimのkey?
llDetectedKey(integer number) 0だと自分?
llGetOwner 現時点での所有者?
llGetOwnerKey(key id) さっぱりわかりません?????
llGetInventoryKey(string name) 名前で習得??
これらの使いわけがさっぱりわかりません。
いろいろ試してはみているものの、自分に着させる時に、パーミッションを要求させようとしても
うまくいきません。さてさてどうしたものか?
key agent・・・・・・対象者のkey
integer perm・・・許可してほしい内容
例
PERMISSION_TRIGGER_ANIMATION(アニメーションさせたい)
PERMISSION_ATTACH (アタッチしたい)
PERMISSION_CHANGE_LINKS (リンクさせたい)
問題は対象者のkeyの習得習得には、現時点で以下の方法があるらしい事が判明
llGetKey () スプリクトが入っているprimのkey?
llDetectedKey(integer number) 0だと自分?
llGetOwner 現時点での所有者?
llGetOwnerKey(key id) さっぱりわかりません?????
llGetInventoryKey(string name) 名前で習得??
これらの使いわけがさっぱりわかりません。
いろいろ試してはみているものの、自分に着させる時に、パーミッションを要求させようとしても
うまくいきません。さてさてどうしたものか?