bgmのテキスト非同期フェードアウト実験

http://packetroom.net/2012/05/bgm.htmlなんて記事を読んだので、やってみたら、できた。
bgm.oggを用意すること。

00.txt

*define

deletemenu

numalias bgm_vol,100

defaultspeed 500,500,500

game

*start

textspeeddefault

mov %bgm_vol,100
bgm "bgm.ogg"

とりあえず、@

bgm_fade_out

文章を表示してみる。

ここから非同期でフェードアウトするかなー?\

end

system.lua

-- system.lua

NSExec("_luacall animation")
function NSCALL_animation()
	local volume = NSGetIntValue(100)
	volume = volume - 1
	NSSetIntValue(100, volume)
	NSExec("_bgmvol "..tostring(volume))
	if volume == 0 then NSLuaAnimationMode(false) end
	return false
end

NSLuaAnimationInterval(100)
NSLuaAnimationMode(false)

NSExec("_luasub bgm_fade_out")
function NSCOM_bgm_fade_out()
	NSLuaAnimationMode(true)
end

まとめ

テキスト表示中であっても、luacall animationによる割り込みは有効であり、その中でNSExecを実行しても問題はない(多分)。
よって、BGMの非同期はできる。ただし、NSLuaを使う関係上、ONScripterは置いてきぼり。グッバイ。
指摘を受けましたので訂正。ONscripterでもできるとのこと。すげー。