maxkaisoupage命令の挙動
 ふと気になったので試してみた。

 maxkaisoupage命令は「回想モードの最大ページ数を設定する命令」だが、実際のところどんなことをしているのだろうか。
 単にデフォルトの回想に関する設定ならば、回想モードを自作した場合は必要のない命令なのだろうか。
 ということで、簡単な検証スクリプトを書いてみた。

*define
maxkaisoupage 1
game

*start
あ\
い\
checkpage %0,2
if %0 == 1 puttext "成功\"
if %0 == 0 puttext "失敗\"
getlog $0,2
$0\
end

 \は半角円マークだと思って欲しい。
 これは、maxkaisoupage命令で回想モードのページ数を1ページに設定し、checkpage命令で2ページ前のログが取得可能か試すスクリプトだ。動かしてみたところ、「失敗」と表示された。また、getlogで2ページ前のログを取得できないかと思ったが、実際取得されたのは1ページ前のものだった。
 maxkaisoupage命令に2を設定すると成功し、ログも取得できた。

 以上の動作から、maxkaisoupage命令は厳密には「回想モードのバッファサイズを指定する命令」と言うべきのようだ。なので、自分で回想モードを作る時には忘れず使うべきだと思う。じゃないと、折角スクリプトでは何十ページと表示できるようにしていても実は5ページしか表示されません、となってしまって実に勿体無い。

 あとこのスクリプトで気がついたのだが、getlogはログが取得できない場合、回想バッファに格納されている一番古いログを返すようだ。
 例えばこのスクリプトの場合、2ページ前のログは取得できないため、回想バッファに格納されている一番古いログ、つまり1ページ前のログが返ってくる。また、このスクリプトのmaxkaisoupage命令に十分大きな値をセットし、getlogで「あ」より前のページのログを取得しようとすると、返ってくるのは「あ」である。
[PR]
by lyricist_m | 2007-05-17 21:44 | NScripter
<< デフォルト機能をそっくりそのまま再現 可変個の引数をとれなくてもいい... >>