文字列変数の覚えておくべき微妙な仕様

system.lua

-- system.lua

NSExec("luasub sample")
function NSCOM_sample()
	local str = ""
	for i=48, 57 do
		if i==55 then str = str .. string.char(0) end
		str = str .. string.char(i)
	end
	NSOkBox(str, tostring(str:len()))
	NSSetStrValue(0, str)
	local s2 = NSGetStrValue(0)
	NSOkBox(s2, tostring(s2:len()))
end

00.txt

*start
sample
end
*define
deletemenu
game

何が言いたいか。

文字コード0の扱いについて。
Lua側の文字列変数は、途中で'\0'があってもそれを含めて文字列であると判断する。
しかし、その'\0'を含む文字列を、NScripterの文字列変数に代入すると、それが吹っ飛び、さらにはそこが文字列終端として認識されてしまう。
いやまあ、NScritperの文字列変数が、C言語系で言うchar[4096]をラッピングしたものであることはその筋では有名な話だよね多分。で、終端に'\0'を使うのはセオリーと言うか歴史なのでどうしようもないと言うか、うん。