連続画面キャプチャーDLL
NScripterのスクリーンショットを定期的にBMP出力するDLLを作成しました。
ダウンロード
下記のURLからどうぞ。
http://www.eiji8pou.pics/download/playmovie20120623.zip
どういうものか
レイヤー型プラグインの機能を利用して、スクリーンショットを定期的に、あるいは命令を飛ばした時に外部フォルダに出力します。
想定された用途としては、
- アニメーションのコマ送り確認
- AVIMakerなどと組み合わせて宣伝用ムービーの作成
などに使えるでしょう。
使い方
NScripterのレイヤー型プラグインです。
まず、define節で定義します。
*define setlayer 10,30,"playmovie.dll" ; 最初の10はレイヤー番号です。後のlayermessage命令で、この番号を使います。 ; 次の30は更新の間隔です。単位はミリ秒です。あまり短くすると動作が重くなります。17にすると60fpsくらいになります。
次に、start節で、プラグインをスプライトに結びつけます。
lsph 100,"*10" ; 最初は非表示にしておくのをオススメします。 ; "*"の次の数字は、setlayerで設定したレイヤー番号です。
レイヤースプライトが非表示中は、出力をしません。vspを効果的に使ってください。
そして、layermessage命令で設定ができます。
基本の命令は以下の通りです。
layermessage 10,"mode,1" ; setlayerで指定した間隔で、スクリーンショットを出力します。 layermessage 10,"mode,0" ; スクリーンショットの出力を止めます。 layermessage 10,"shot" ; 直後の更新の機会にスクリーンショットを出力した後、"mode,0"に移行します。
スクリーンショットが保存されるフォルダーは、初期状態では、"playmoviepieces"フォルダに設定されています。
変更する時には、dirを使います。
layermessage 10,"dir,ss\" ; 保存先をssフォルダに変更します。保存するフォルダは別途作成してください。 ; 保存先フォルダが存在しなくてもエラーは出ませんが、出力はできません。 ; また、フォルダの最後には\をつけてください。 ; フルパス指定も一応可能です。
また、全てのスクリーンショットに一つだけスプライトをプリントできます。
lsph 500,":a;logo.png",0,0 ; ロゴをスプライトに読み込んでおきます。 layermessage 10,"sp,500,400,0,0,255,0" ; 出力されるスクリーンショット全てにロゴをプリントします。
sp命令のパラメータは、以下の通りです。
layermessage 10,"sp,(スプライト番号),(左上のx座標),(左上のy座標),(プリントするセル番号),(不透明度),(モード)" ; モードは 0:通常のアルファブレンド 1:加算合成 2:減算合成 です。
スプライトを削除する時は、無効なスプライト番号を指定します。
layermessage 10,"sp,-1" ; スプライトを削除する。