Studencheskie Programmisty

NScripterの実行されている環境を知る方法

Dec 13, 2010

大概の人は、NScripterでゲームを作るとき、実行環境としてNScripterのみを想定しているのだと思う(当たり前だ)。 しかし、例えば同人ゲームなどで、NScripterの互換環境であるONScripterも サポートしようとすると、NScripterとONScripterで処理を分けたくなることがあるかもしれない(NScripterでしか実装されていない機能を使うときとか)。 そんなときどのようにして実行環境を調べればいいのかについて解説する。

結論から言ってしまうと、getreg命令を使えば良い。これは、レジストリの値を取得する命令だが、ONScripterは疑似的にこの機能を実現するために、一定の書式で書かれた「registry.txt」を読み込む機能を実装している。つまり、戻ってきた値によってNScripterで実行されているのか、それともONScripterで実行されているのかを知ることができるというわけだ。

registry.txt

[software\divertissement\shitootome]
"exec mode"="ONScripter"

00.txt(部分)

;実行しているシステムを調べる
getreg $0,"software\divertissement\shitootome","exec mode"
if $0="ONScripter" mov $0,"ONScripter"  ;ONScripterの時
if $0="" mov $0,"NScripter "            ;NScipterの時
lsp 0,":s/20,20,4;#000000実行中の環境:"+$0,0,0

なお、このままだとgetreg命令を解さない、ONScripter以外の互換環境もNScripterと判別されてしまうので、 より確実にNScripterのみを判別したい場合には、インストール時にレジストリに値を書き込んでおけばよい。