nekodorif - specifications - katochan - basis |
猫どりふ 落下物基本仕様書 |
概要 :::伺かの頭上に落とす物を作成できます。 基本構造 :::katochanディレクトリに任意の名称のディレクトリを作り、そこにファイル一式を置くと、 右クリック時のポップアップメニューにそのディレクトリに格納された落とす物が出現します。 home +-katochan +-kanadarai +-sakura +-flog 構成ファイル surface0.bmp surface1.bmp surface1@理夢.bmp surface2.bmp surface2@まゆら.bmp sound0.wav sound1.wav sound2.wav sound3.wav katochan.txt profile.txt :::surface0.bmpとkatochan.txtは必須ファイルです。そのほかは必要に応じて作成します。 :::surface[0/1/2].bmpは落とす物のビットマップイメージです。イメージの内容とIDの対応は以下の設定に完全に準拠して下さい。 surface0 出現から頭に当るまで surface1 頭に当った surface2 頭から離れて画面下に消えるまで :::surface[0/1/2]@ゴースト名.bmpを作成すると、指定したゴーストでは当該サーフェス画像としてそのファイルが使用されます。 例えば surface1@理夢.bmp を作成すると、理夢に落ちる落下物ではこの画像が使用され、他のゴーストではデフォルトのsurface1.bmpが利用されるようになります。 :::利用可能な画像フォーマットはBMPとPNGです。ただしどちらかに統一する必要があります。 PNGでは4/8/24bitカラーをサポートします。(詳細:タイプ2&色深度8、タイプ3&色深度4/8) BMPの場合は色数に制限はありません。 あまり大きな画像をかませると動作が不安定になるようです。常識的な大きさに留めるようにしてください。 :::左上原点の色が抜かれるので、抜きたい箇所を左上原点と同じ色でマスクして下さい。 外線がアンチエイリアスされていると透明色を抜く時に中途半端な色が残ってしまうのは 伺かと同じです。うまく作ってください。 :::katochan.txtには設定情報を書き込みます(別項)。 :::*.wavは特定タイミングで再生されるwaveファイルです。再生タイミングに関する情報はkatochan.txtに記述します(別項)。 :::profile.txtは落下物のプロフィールです。内容は単なるテキストファイルで書式も事由です。省略してもかまいません。 katochan.txt :::「かえる」のkatochan.txtを以下に参考として掲載します。 #name かえる #for 奈留 #target sakura #category hate,保護色,跳ねる #before.script \uいらっしゃいましたで。\w8\h\s0え‥‥何?\e \h\s0この音はまさか‥‥\e #before.fall.type gravity #before.fall.speed 8 #before.wave sh-ball4_2.wav #hit.script \h\s2きいやああああああああああっ!!\e \h\s2いやああああっ!\n\n%keroname、取って取って〜!\e #hit.waittime 50 #hit.ofset.x -12 #hit.ofset.y -86 #after.fall.type bound #after.fall.speed 5 #after.slide.type evenspeed #after.slide.magnitude -10 #after.wave sh-ball4_2.wav #end.script \h\s3‥\w8‥\w8ぅぅ、きもわるいよ〜。\w8\uどのへんが?\w8\h\n\n単色なとこ。\u\nおい。\e \h\s7もう、かえるはやだってば!\e #dodge.script \h\s[0]ふー、助かった‥‥\w8\u別に当たっても痛くはないんだけどな。\hそれでも、嫌。\e :::必須エントリはnameのみです。そのほかのエントリは省略するとそれぞれのデフォルト値がセットされます。 :::エントリは#[id]の形で記述し、その次の行以降が本文となります。同一エントリで二重指定してもかまいません。すべて有効になります。 :::#name及び#for以外のエントリでは、後に「@ゴースト名」を付加すると、そこに書かれた内容は指定したゴーストのみで有効となります。 例えば #before.script@毒子 を作成すると、毒子に落ちるオブジェクトではそこに記述された内容を発言するようになります。 この時、デフォルトのbefore.scriptに書かれた内容は無効となります。 ■基礎エントリ name 落とす物の名前を記述します。唯一の必須エントリです。 target 物を 伺か本体とkeroのどちらに落とすかを指定します。以下の2つのメソッドからひとつを記述します。省略や無効な値を指定したときはsakuraになります。 sakura 伺か本体に落ちます。 kero keroに落ちます。 category categoryエントリには落とす物のカテゴリ(その物体の素性を示す単語)を記述します。半角カンマで区切って複数個記述できます。 自由書式のエントリですが、有効な情報を記載するためのガイドラインが策定されています。基本的にこれに従ってください。 完全に省略すると"other"になります。 for forエントリには落とす物が"主に対象としているゴースト"を記述します。半角カンマで区切って複数個記述できます。 例えばかえるは理夢とせりこ用だと思ったら 理夢,せりこ と書いてください。 今のところ書いたからといってどうなるわけでもないエントリですが、 とりあえずNotifyのReference1にマッピングされますのでゴースト側で参照可能、自由に使えます。 ■before系エントリ 落とす物が画面上部から出現した際に処理されます。 before.script before.scriptエントリには、落とす物が画面上部から出現した際の 伺かのしゃべりをさくらスクリプトで記述します。何も書かなければ何も発言しません。 このエントリは、猫どりふ側の設定[会話/反応]がSEND SSTP/1.1の時に有効です。 before.fall.type before.fall.typeエントリは、落とす物が画面上部から出現してから頭に当るまでの、落下の挙動を記述します。以下の2つのメソッドからひとつを記述します。省略するとgravityになります。 gravity 重力落下です。経過時間の2乗に比例して落下速度が上がります。 evenspeed 等速落下です。 none 自力では落下しません。アニメーション機能(SERIKO/1.2)で落下させる必要があります。 before.fall.speed before.fall.speedエントリには落下速度の値を記述します。整数で指定します。before.fall.typeがgravityの時は重力定数、evenspeedの時は50ms当りに落下するドット数となります。1〜100の範囲で指定してください(範囲外の値が指定された場合は制限されます)。省略時には1になります。 before.slide.type before.slide.typeエントリには、落とす物が画面上部から出現してから頭に当るまでの、x方向の挙動を記述します。以下の2つのメソッドからひとつを記述します。省略するとnoneになります。 none x方向には動きません。 sinwave sin波で横揺れします。 leaf 木の葉がひらひらと舞い落ちる挙動です。 落下挙動も同時に制御しますのでbefore.fall.typeが無効になります。 before.slide.magnitude before.slide.magnitudeエントリにはx方向の動きのレベルを記述します。整数で指定します。before.slide.typeがnoneの時は無視されます。sinwaveの時はx方向の振幅となります。-100〜100の範囲で指定してください(範囲外の値が指定された場合は制限されます)。省略時には0となります。 before.slide.sinwave.degspeed before.slide.sinwave.degspeedエントリには、sin波の角速度を記述します。before.slide.typeがsinwaveの時のみ意味を持ちます。50msあたりに進む角度(degree)を整数で指定します。1〜180の範囲で指定します(範囲外の値が指定された場合は制限されます)。省略値は30です。 before.wave before.waveエントリには再生するwaveファイル名を記述します。省略時には何も再生されません。 before.wave.loop before.wave.llopエントリにはbefore.waveエントリで指定したwaveファイルのループ再生情報を記述します。 on と書くことでループ再生が有効になります。省略時はoffです。 before.appear.direction 落下物の出現位置を指定します。デスクトップ上辺以外の位置から物を出現させることが可能となります。アニメーション(SERIKO/1.2)と組み合わせて使用してください。SERIKOを使わない場合にこのエントリを不用意に弄くると困ったことになります。よく理解してから使用してください。 above デスクトップ上辺、伺か直上から出現します。デフォルトです。 below デスクトップ下辺、伺か直下から出現します。 ※なにしろ直下からなのでbefore.appear.ofset.xを適当に指定しないと即当たります。 注意してください。 left デスクトップ左辺、伺か頭の真横から出現します。 right デスクトップ右辺、伺か頭の真横から出現します。 before.appear.ofset.x 落下物のX方向の出現位置を補正します。before.appear.directionがaboveおよびbelowで有効となります。 出現位置が正数で右、負数で左にずれます。単位はドットです。指定範囲は-32768〜+32767です(範囲外の値が指定された場合は制限されます)。省略時は0になります。 before.appear.ofset.y 落下物のY方向の出現位置を補正します。before.appear.directionがleftおよびrightで有効となります。 出現位置が正数で下、負数で上にずれます。単位はドットです。指定範囲は-32768〜+32767です(範囲外の値が指定された場合は制限されます)。省略時は0になります。 ■hit系エントリ 物が 伺かに当ったときに処理されます。 hit.script hit.scriptエントリには、物が当ったときの 伺かのしゃべりをさくらスクリプトで記述します。何も書かなければ何も発言しません。 このエントリは、猫どりふ側の設定[会話/反応]がSEND SSTP/1.1の時に有効です。 その他の詳細についてはbefore.scriptと同じです。 hit.waittime hit.waittimeエントリには、物が当ってから再び落下を始めるまでの待ち時間を記述します。単位は50msです。最大値は200(=10秒)です。範囲外の値が指定された場合は制限されます。省略すると0になります。 hit.ofset.x before.appear.ofset.xと同じです。before.appear.ofset.xを使用してください。 hit.ofset.y hit.ofset.yエントリは、物が 伺かに当ったと判定されるy座標(平たく言えば頭の高さ)を補正するエントリです。正数で下、負数で上にずれます。単位はドットです。指定範囲は-32768〜+32767です(範囲外の値が指定された場合は制限されます)。省略時は0になります。 hit.wave hit.waveエントリには再生するwaveファイル名を記述します。省略時には何も再生されません。 hit.wave.loop waveファイルのループ再生情報を記述します。詳細はbefore.wave.loopと同じです。 ■after系エントリ 頭に当った物が再び落下を始めたときに処理されます。 after.script after.scriptエントリには、物が再び落下を始めたときの 伺かのしゃべりをさくらスクリプトで記述します。何も書かなければ何も発言しません。 このエントリは、猫どりふ側の設定[会話/反応]がSEND SSTP/1.1の時に有効です。 その他の詳細についてはbefore.scriptと同じです。 after.fall.type after.fall.typeエントリは、落とす物が画面下部へ消えるまでの落下の挙動を記述します。以下の3つのメソッドからひとつを記述します。省略するとgravityになります。 gravity 重力落下です。経過時間の2乗に比例して落下速度が上がります。 evenspeed 等速落下です。 bound 重力落下ですが、上方に跳ねてから落下します。 跳ねる量はbefore.fall.speed(after.fall.speedでなく)の2倍のドット数になります。 none 自力では落下しません。アニメーション機能(SERIKO/1.2)で落下させる必要があります。 after.fall.speed after.fall.speedエントリには落下速度の値を記述します。整数で指定します。after.fall.typeがgravityかboundの時は重力定数、evenspeedの時は50ms当りに落下するドット数となります。1〜100の範囲で指定してください(範囲外の値が指定された場合は制限されます)。省略時には1になります。 after.slide.type after.slide.typeエントリには、落とす物が画面下部へ消えるまでのx方向の挙動を記述します。以下の3つのメソッドからひとつを記述します。省略するとnoneになります。 none x方向には動きません。 sinwave sin波で横揺れします。 evenspeed 等速で動きます。 leaf 木の葉がひらひらと舞い落ちる挙動です。 落下挙動も同時に制御しますのでafter.fall.typeが無効になります。 after.slide.magnitude after.slide.magnitudeエントリにはx方向の動きのレベルを記述します。整数で指定します。after.slide.typeがnoneの時は無視されます。sinwaveの時はx方向の振幅となります。evensppedの時は50ms当りの移動量となります。-100〜100の範囲で指定してください(範囲外の値が指定された場合は制限されます)。省略時には0となります。 after.slide.sinwave.degspeed after.slide.sinwave.degspeedエントリには、sin波の角速度を記述します。after.slide.typeがsinwaveの時のみ意味を持ちます。50msあたりに進む角度(degree)を整数で指定します。1〜180の範囲で指定します(範囲外の値が指定された場合は制限されます)。省略値は30です。 after.wave after.waveエントリには再生するwaveファイル名を記述します。省略時には何も再生されません。 after.wave.loop waveファイルのループ再生情報を記述します。詳細はbefore.wave.loopと同じです。 ■end系エントリ 頭に当たった物が画面外に消えたときに処理されます。 物が頭に当たらずにまっすぐ落下消滅した場合は、end系でなくdodge系エントリが処理されます。 end.script end.scriptエントリには、物が画面外に消えたときの 伺かのしゃべりをさくらスクリプトで記述します。何も書かなければ何も発言しません。 このエントリは、猫どりふ側の設定[会話/反応]がSEND SSTP/1.1の時に有効です。 その他の詳細についてはbefore.scriptと同じです。 end.wave end.waveエントリには再生するwaveファイル名を記述します。省略時には何も再生されません。 end.wave.loop waveファイルのループ再生情報を記述します。詳細はbefore.wave.loopと同じです。 end.leave.direction 落下物が消滅する方向を指定します。落下物が画面外へ出た場合、ここで指定した方向のみで消滅します。 アニメーション(SERIKO/1.2)と組み合わせて使用してください。SERIKOを使わない場合にこのエントリを不用意に弄くると困ったことになります。よく理解してから使用してください。 above デスクトップ上辺から出たときに消滅します。 below デスクトップ下辺から出たときに消滅します。これがデフォルトです。 left デスクトップ左辺から出たときに消滅します。 right デスクトップ右辺から出たときに消滅します。 「+」で結合することにより複数指定することが可能です。例えば、画面右端から出現して左方向へ一直線に進み、伺かに当たったら上方へ飛んでいく落下物 (よけられたらそのまま画面左端へ消える)場合、以下のように書く必要があります。 #end.leave.direction above+left 実は結合演算子は「+」である必要はなく、なんでもよい。 #end.leave.direction aboveとbelow、あとleftもよろぴくねママン。 これでもたぶん大丈夫です。好きにしてください。 ■dodge系エントリ ユーザの操作によってよけられた落下物が画面外に消えたときに処理されます。 dodge.script dodge.scriptエントリには、よけた物が画面外に消えたときの 伺かのしゃべりをさくらスクリプトで記述します。何も書かなければ何も発言しません。 このエントリは、猫どりふ側の設定[会話/反応]がSEND SSTP/1.1の時に有効です。 その他の詳細についてはbefore.scriptと同じです。 dodge.wave dodge.waveエントリには再生するwaveファイル名を記述します。省略時には何も再生されません。 dodge.wave.loop waveファイルのループ再生情報を記述します。詳細はbefore.wave.loopと同じです。 注意 :::以下のエントリは落下物の基本的な動きを書き換える、強力なエントリです。 機能を理解の上、注意して利用してください。 before.appear.direction end.leave.direction before.fall.tyep の none after.fall.type の none :::もし落下挙動のプログラムを誤り、落下物が画面外へ出てしまい戻らなくなったり画面内で動かなくなってしまった場合、落下物は内部タイマで それを自動的に検出して、安全に終了します。 |