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

:::もし落下挙動のプログラムを誤り、落下物が画面外へ出てしまい戻らなくなったり画面内で動かなくなってしまった場合、落下物は内部タイマで それを自動的に検出して、安全に終了します。