メモ

NScripter2について、ちょっとずつでもメモを。

文字コードについて

NScripter2では、旧NScripterの仕様を引き継いで、00.txt〜99.txtまでのファイルにシナリオを書き込んで、それを解釈して実行する形を取る。
新しい命令を作る場合には、

  • シナリオファイル中でdefsub命令を使うか、
  • sysytem.lua内に新しい命令を追加するか

である。
まあ、それはともかく。
このシナリオファイルは旧NScripterと同様にShift-JISでの記述が必要となっている。
ただ、昨今のグローバル()な環境を考えると、外国語への移植の妨げはできるだけ少なくした方がよい訳で、文字コードUTF-8にしておくのが一番無難であろう。(別にUTF-16でもいいんだけどさ)
で、実はこれ簡単にUTF-8対応になる。
root.luaの中に、シナリオファイルを読み込むルーチンが真っ先に出てくる。この中でわざわざShift-JISをUTF-8に変換してからシナリオを実行している訳で、じゃあ最初からUTF-8にしてもいいんじゃね?となる。
ついでに、番号のテキストファイルしか受け付けられないのも、この部分のせいでもあるので、ここをどうにかしてしまえば番号名以外のシナリオファイルも実行できる訳で、ここはプロジェクトの初期にシナリオライターとも相談して、気の済むように仕様を変更するのがベターではなかろうか。

	for i=0,99 do
		local fname=string.format("%02d.txt",i)
		if archive.seek(fname) then
			flag=true
			local str=encoding.ansi_to_utf8(archive.read("\n"))
			basic.loadscript(fname,str)
		end
	end