スキップモードについてまとめ
NScripterでは、「次の選択肢まで飛ばす」の名前で、強制スキップは最初から実装されている。
後から、未読の部分まで来るとスキップモードが止まるような仕組みが追加され、これを既読スキップと呼ぶ。
既読スキップを使えるようにするには、二つの手順が必要で、実行するには二つの方法がある。
既読スキップの準備
- まず、*define節で kidokuskip 命令を実行する。
- 次に、*start節の早いうちに、kidokumode 1を実行する。
これだけ。
ちなみに kidokuskip を実行すると、nscr.exeの隣にkidoku.datファイルが作成されるようになり、この中にスクリプト各行の実行・未実行のデータが記録される。なので、このファイルを削除すれば、また全ての行が未読になる。
既読スキップにするには。
- 画面上にメニューバーがあれば、そこからユーザーがタブをクリックしてスキップモードにできる。
- もしくは、スクリプト上で、 systemcall skip をすれば、スキップモードになる。
この時、初期状態か kidokumode 0 を実行していれば、強制スキップモード(次の選択肢までノンストップ)になり、 kidokumode 1 をやっていれば既読スキップモードになる。
現在のモードを判定
isskip を使う。
例えば、
isskip %0
とすれば、%0には0,1,2のいずれかが入る。
- 0
- 通常モード
- 1
- スキップモード
- 2
- オートモード
※オートモードについてはまた別項で。
スキップモードの解除
プレイヤーが何かの入力を行うか、スクリプト上で skipoff 命令を使えば、スキップモードもオートモードも解除される。
そして、既読スキップモードであれば、未読の行に差し掛かると解除される。
この「未読の行」には、実行されなかったif文を含み、かつ、":"(コロン)で区切ったところでやはりそこは未読になるようだ。
関連のちょっといい話
一つ目。*define節で effectcut をしておくと、スキップモード時にエフェクトの時間が全て0扱いになって早くなる。
二つ目。*define節で effectskip 1 をしておくと、エフェクト中に何か入力でエフェクトをキャンセルできるようになり、やはり早くなる。