既存のNScripter製ゲームにワンボタンスクリーンショット取得機能を追加する。

任意のNScripter製のゲームで、ボタン一つでスクリーンショットを取得して、それを外部にbmpで出力するluaプログラム。

やり方

※前提条件として、そのNScripter製ゲームではnslua.dllを使っていないことが必要です。
※使っている場合は、下記のスクリプトをどのように処理に追加するかは、各自で考えてください。
そのゲームのnscr.exeと同じディレクトリに

  • (念の為に)最新版のnscr.exeを置く。
  • nslua.dllを置く。
  • system.luaを作成し、に下記の内容をコピペして保存。
  • ssと言う名前のフォルダを作成(変更可能)

これで完成です。
普通にnscr.exeを起動させて、スクリーンショットを撮りたくなったら、F12キーを押せばそれだけで取れるようになっています。

system.lua

NSExec("luacall animation")

local push_rate = 1000
local set_key = "F12"
local save_dir = "ss\\"

local last_down = 0
local width = 0
local height = 0
width, height = NSGetWindowSize()
local exec_shot = "getscreenshot "..tostring(width)..","..tostring(height)

function not_boolean(val)
	if ( val ) then return false else return true end
end

function NSCALL_animation()
	if not_boolean(NSGetKey("F12")) then return nil end
	local now = NSTimer()
	if ( now - last_down ) < push_rate then return end -- 1秒に一度何かをする。
	last_down = now
	NSExec(exec_shot)
	local file = save_dir..os.date("%Y%m%d%H%M%S")..".bmp"
	NSExec("savescreenshot \""..file.."\"")
end
NSLuaAnimationInterval(40)
NSLuaAnimationMode(true)

改造

  • どのキーで反応するかは、4行目の「set_key」を変更すると可能です。
  • 連続押しの場合、最低1000ミリ秒経たなければキーが反応しません。この時間を変更する場合は、3行目の「push_rate」を変更してください。
  • スクリーンショットのサイズはデフォルトではウィンドウのサイズに固定していますが、width, heightを変更することで変えられます。

免責事項

何があっても責任取りませんよ!