連続画面キャプチャーDLL

NScripterスクリーンショットを定期的にBMP出力するDLLを作成しました。

ダウンロード

下記のURLからどうぞ。
http://www.eiji8pou.pics/download/playmovie20120623.zip

どういうものか

レイヤー型プラグインの機能を利用して、スクリーンショットを定期的に、あるいは命令を飛ばした時に外部フォルダに出力します。
想定された用途としては、

  1. アニメーションのコマ送り確認
  2. 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" ; スプライトを削除する。

その他の注意点