さらなる未練
ファイル移動なし起動への未練 - 永字八法の続き。
コメントでさらに示唆をいただいたので試してみる。
defineresetを使用するとどうだろうと言う提案である。
これは、いったんstart節に突入してセーブ場所を調べるなり確保するなりしてからもう一度defineresetで最初から読み込み、その時、変数に保持していたセーブ場所をsavedirに読ませるのはどうだろう、と言う提案だと理解した。(まちがっていたら容赦なくつっこんでくださいませ>ピト様)
で、試しに以下のスクリプトを組んで動かしてみた。
*define itoa $0,%0 mesbox $0,"" game *start itoa $0,%0 mesbox $0,"" rnd2 %0,1,100 itoa $0,%0 mesbox $0,"" 終了しますか? select "はい",*exit,"いいえ",*resume *exit end *resume definereset
で、これを動かすとわかるのだが、変数は起動時と、gameコマンド実行時に一度初期化されてしまう仕様なのだ。従って、defineresetをした時点で、変数に取っておいたディレクトリ名は初期化されてしまう。
以前、NScripterのバージョンアップの際に「game実行時に配列変数の初期化をしないことにした」と言うアナウンスがあったが、これは裏を返せば「game実行時に普通の変数は初期化します」と言う意味でもあったのだ。
残念ながら、defineresetを使って望んだような動きを得ることはできないようだ。