NScripter×Luaでevalとその使い道
 NScripterでeval - 永字八法を見て「使い道ならあるよ! あるよ!(AA略」と思ったので、NScripter×Luaでevalを作ってみました。スクリプトはDelusionist's Utopia -NScripter-から落としちゃってください。

 単純に、NSExec()に文字列を渡すだけのラッパーを書いてもいいのですが、それだと不便です。NSExec()だと:(コンマ)を使えないんですよね。つまり、命令を1個ずつ書かないといけない。なので、それを解決するために二つの方法をとりました。
 一つ、Luaで受け取った文字列をコンマで分割する。こうすることで普通に命令を書くのとほぼ同等の動作をしてくれます。これがluasub evalの方ですね。ただし、文字列中にコンマを含んでいたり(例:caption "aiueo:kakikukeko")、lsp ":s#FFFFFF~"ってやろうとすると、途中のコンマで分割されてしまうので誤動作します。
 もう一つ、受け取る文字列の数を可変にする。これがluasub eval2です。
 両命令共通の注意点なんですが。evalの引数内で文字列を表現する場合、""(ダブルクォーテーション)ではなく''(シングルクォーテーション)を使用します(例:eval "caption 'aiueo'")。なので、文字列中でシングルクォーテーションを使用すると誤動作します(例:eval "caption 'I'm home!'なんて使い方はNG")。

 で、使い道ですが。一番使えるのはデバッグ用途じゃないでしょうか。
 例えば、クリック待ちからinputstrで命令入力→evalに渡す、って使い方。NScripterを終了させることなく変数を操作できるので、そこそこ便利そう。吉里吉里でいう、デバッグコンソール下部のアレみたいな感じですね。
 あと、00~99.txt以外のテキストファイルに命令を書いていても実行できるわけで。csvreadかreadfileで読み込んでやればいいわけですから。必然的にファイル数が多くなりそうな探索型ADVとかで使えるんじゃないでしょうか。


 次は、Luaでスプライトの位置情報を取得できるようになったのでそこらへんを弄るか、Lua側からIO周りって弄れるのかなーって辺りを探ってみようかなと思います。
[PR]
by lyricist_m | 2009-04-24 22:52 | NSLua
<< Luaで剰余の結果を調べてみた Luaで引数の自由度が上がった >>