今回はプラグインの設定をセーブできるようにしてみるね。 | |
プラグインの設定って? | |
日付が何月何日になってるかってことと、レイヤの位置と表示/非表示の情報だよ。 | |
あ、そういうことね。 えっと、それってやっぱり KAG のセーブデータの中に書き込んだりするの? |
|
そうだよ。 onStore っていうメソッドを使って、 プラグインの設定をセーブデータに書き込むの。 |
|
じゃあ、データをセーブする時に onStore メソッドが呼び出されるってこと? | |
ううん、そうじゃないよ。 | |
えっ? じゃあ onStore メソッドっていつ呼び出されるの? | |
KAG ってどこでもセーブできるわけじゃないってことは知ってるよね? | |
うん。セーブできるのってセーブ可能なラベルの所だけだよね。 | |
onStore メソッドが呼び出されるのは、そのセーブ可能なラベルを通過した時なんだ。 | |
あ、そうなんだ。 | |
だから、セーブデータに書き込まれるのは、直前にセーブ可能なラベルを通った時の設定内容になるってワケ。 | |
つまり、プラグインのデータも普通のセーブデータと同じで、 セーブできるのはセーブ可能なラベルを通った時のデータだけ、ってことなんだね。 | |
そういうこと。 ただ、tempsave タグでセーブした時は、tempsave タグを実行した時の状態がセーブされるんだけどね。 それじゃ、まずは onStore メソッドでプラグインの設定をセーブデータに書き込んでみるね。 |
onStore メソッドの第1引数の f は辞書配列になってて、
この辞書配列にデータを書き込むと、書き込んだ内容がセーブデータに記録されるんだ。 で、今回は f の中に dateOptions っていう辞書配列を作って、 これにプラグインの設定を書き込んでるの。 |
|
じゃあ、onStore メソッドの第1引数の f って、 ゲーム変数の f ってこと? | |
ん〜、厳密に言うと onStore メソッドの第1引数の f とゲーム変数の f は別の辞書配列なんだけど、どっちも同じセーブデータに書き込まれるよ。 | |
ふぅん、そうなんだ。 じゃあ、第2引数の elm っていうのは? |
|
第2引数は tempsave の時のオプションってことになってるんだけど、 必ず void になるから、この引数は使わないよ。 | |
え、そうなの? | |
うん。だから onStore メソッドの引数は1個って思っててもいいんじゃないかな。 | |
そっか。わかった。 | |
じゃ、onStore メソッドを使って、実際にプラグインの設定をセーブしてみよっか。 | |
うん、そうだね。 | |
まず、このスクリプトを実行してみて。 必要なファイルはこれね。 |
<プラグイン設定のセーブ(first.ks)>
『01/23』って表示されたね。 | |
うん。 これでデータがセーブされたはずだから、一旦ウィンドウを閉じて。 |
|
はーい。 | |
で、krkr.eXe があるフォルダに savedata っていうフォルダがあって、 その中に data0.kdt っていうセーブファイルがあるから、それをメモ帳とかで開いてみて。 |
<セーブファイルがある位置>
セーブデータってメモ帳とかで読めるの? | |
Config.tjs のセーブデータの保存モード(saveDataMode)を "z" とか "c" とかにすると、 セーブデータが圧縮されたり暗号化されたりして読めなくなるんだけど、デフォルトの設定なら読めるよ。 | |
へぇ、そうなんだ。 じゃあ、開いてみるね。 |
<セーブデータ(data0.kdt)の中身>
うわ、なんかすごい色んなことが書かれてるね。 | |
うん。セーブデータにはレイヤの状態とかスクリプトのどの位置でセーブされたかとか、 いっぱい情報が保存されるからね。 | |
さっき保存したプラグインのデータって、どこに書いてあるの? | |
『dateOptions』で検索してみればすぐに見つかるよ。 | |
なるほど。じゃあ、『dateOptions』で検索、っと。 あ、あった。 |
<プラグインの設定が書かれている箇所(赤枠で囲まれている部分)>
ちゃんと設定した通りに値が書き込まれてるでしょ。 | |
うん、レイヤの位置とか日付は設定した通りになってるみたいだね。 けど、foreVisible と backVisible が 1 になってるよ? これって true のはずでしょ? |
|
変数の値をファイルに保存するときは、true は 1 になって、 false は 0 になるんだ。 | |
あ、そうなんだ。 それじゃ、true と false って実は数値なの? |
|
そうだよ。 ただ、偽は 0 だけど、 真は 1 じゃなくて『0 以外』ってことになってるから、そこんとこ注意してね。 |
|
それってどういうこと? | |
例えば、if(x) っていう条件式があって、x が数値だとすると、 この条件が成り立たないのは x の値が 0 の時だけってこと。 | |
じゃあ、x が 2 とか -1 とかでも成り立つの? | |
うん。 0 以外ならどんな数値でも真とみなされるからね。 |
|
へぇ、そうなんだ。 | |
これでデータがセーブできてるのも確認できたことだし、今回はこんなところかな。 それじゃ、また次回ね! |